In unittest, posso variabili per l'impostazione di una classe e poi i metodi di questa classe possono scegliere a seconda di quale variabile si vuole usare ...unittest Vs pytest
class test_class(unittest.TestCase):
def setUp(self):
self.varA = 1
self.varB = 2
self.varC = 3
self.modified_varA = 2
def test_1(self):
do_something_with_self.varA, self.varB
def test_2(self):
do_something_with_self_modified_varA, self.varC
Quindi, in unittest, è stato facile mettere insieme di test che potrebbero andare sotto una classe e quindi usare molte variabili diverse (varA e varB) per metodi diversi. In pytest, ho creato un appuntamento fisso nel conftest.py invece di una classe in unittest, come questo ...
@pytest.fixture(scope="module")
def input1():
varA = 1
varB = 2
return varA, varB
@pytest.fixture(scope="module")
def input2():
varA = 2
varC = 3
return varA, varC
nutro questo input1 e input2 per le mie funzioni in un file diverso (diciamo test_this.py) per due diverse funzioni. Ecco le domande sulla base di informazioni di cui sopra ...
Dal momento che non posso solo dichiarare le variabili locali in conftest.py come io non posso semplicemente importare questo file. C'è un modo migliore per dichiarare qui variabili diverse che possono essere utilizzate in diverse funzioni in test_this.py? Ho cinque diverse configurazioni nel mio test effettivo per queste variabili, definendo che molti dispositivi diversi in conftest.py e li uso come argomento di funzione in cinque diverse funzioni in test_this.py suona doloroso, preferirei tornare alla struttura di classe unittest, definire le mie variabili e scegli quello che voglio
Devo solo dichiarare le variabili globali in test_this.py e usarle nelle funzioni nel modo che voglio? Sembra un po 'non pitonico. Queste variabili sono utilizzate solo dalle funzioni in questo file.
Diciamo che ho test_that.py e test_them.py pure. Se ho alcune variabili condivise tra questi diversi file, come dovrei dichiararli? basta creare un file calle variables.py nella directory in cui sono presenti tutti questi file di test e fare un'importazione ogni volta che ho bisogno? In questo modo posso mantenere tutti i dati in un separato.
È mia impressione che pytest scoraggi l'utilizzo di una classe per organizzare le proprie funzioni? Ogni esempio che leggo online, sembra che impieghino un sacco di funzioni con i soli dispositivi. Che cos'è una configurazione di definizione di classe e metodi e organizzare i test in pytest?
Ho uno scenario di prova in cui devo utilizzare il risultato di una funzione in un'altra. Con pytest, ho l'asserzione che è alla fine di una funzione, non un ritorno quindi non potrò usare questa funzione come fixture. Come posso realizzare questo? So che non è una buona pratica che il mio test si basi su un altro, ma c'è un lavoro in giro?
Grazie in anticipo per le vostre risposte.
Grazie a mazzo, che aiuta. – LuckyStarr