[Python] pytest e classi

Manlio Perillo manlio.perillo a gmail.com
Lun 26 Ott 2015 19:02:16 CET


2015-10-26 18:39 GMT+01:00 Perini Matteo <perini.matteo a gmail.com>:
> Il 26/10/2015 18:56, Manlio Perillo ha scritto:
> [...]
> class CC():
>     def __init__(self):
>         self.a = 2
>         self.b = 4
>         self.c = 5
>
>     def somma(self):
>         return  self.a+self.b+self.c
>     def test_somma():
>         assert somma()==11
>

test_somma **non** va messo nel modulo principale, ma nel modulo di test.

> if __name__=="__main__":
>     tt=CC()
>     print(tt.somma())
>
>
> se do il comando:
> py.test-3 pt.py
>
> pytest non trova nessun test da fare!

Ovvio che non lo trova.
Laggi la documentazione di pytest per vedere come vengono trovate le
funzioni di test.

> se richiamo il test da un file esterno (test_pt.py) in questo modo:
>
> from pt import CC
>
> def test_somma():
>     CC.a=2
>     CC.b=4
>     CC.c=5
>     assert CC.somma(CC)==11
>
> il test funziona.
>
> Ma è il modo giusto di passare i parametri alla funzione di test?

E' l'unico modo di fare unit test.
Il problema è che quel codice è sbagliato; non è il modo corretto di
usare le classi!

Il modo corretto è:

def test_somma():
    cc = CC(2, 4, 5)
    assert cc.somma() == 11


Ciao  Manlio


Maggiori informazioni sulla lista Python