tutorial español python unit-testing oop nose python-unittest

español - Python unitest: utilice las variables definidas en las funciones de configuración de nivel de clase y módulo, en las pruebas



django tutorial (1)

Para la variable a , la única solución es global a . Si setupModule() código fuente de setupModule() Python 2 , setupModule() no parece hacer nada mágico, por lo que se aplican todas las reglas habituales de espacio de nombres.

Si a fuera una variable mutable, como una lista, podría definirla en el ámbito global y luego agregarla dentro de setupModule.

Es más fácil trabajar con la variable b porque está definida dentro de una clase. Prueba esto:

@classmethod def setUpClass(cls): cls.b = "Setup Class variable" def test_1(self): print self.b

La prueba de la unidad de Python utiliza las pruebas de nodos para experimentar con dispositivos de clase y módulo de Python , para tener una configuración mínima en mis pruebas.

El problema al que me enfrento es que no estoy seguro de cómo usar las variables definidas en el setupUpModule y las funciones setUpClass en mis pruebas (ejemplo: - test_1 ).

Esto es lo que estoy usando para probar:

import unittest def setUpModule(): a = "Setup Module variable" print "Setup Module" def tearDownModule(): print "Closing Module" class TrialTest(unittest.TestCase): @classmethod def setUpClass(cls): print a #<====== b = "Setup Class variable" @classmethod def tearDownClass(cls): print "Closing Setup Class" def test_1(self): print "in test 1" print a #<====== print b #<====== def test_2(self): print "in test 2" def test_3(self): print "in test 3" def test_4(self): print "in test 4" def test_5(self): print "in test 5" if __name__ == "__main__": unittest.main()

El error que recibo es:

Setup Module ERROR Closing Module ====================================================================== ERROR: test suite for <class ''one_setup.TrialTest''> ---------------------------------------------------------------------- Traceback (most recent call last): File "/Library/Python/2.7/site-packages/nose/suite.py", line 208, in run self.setUp() File "/Library/Python/2.7/site-packages/nose/suite.py", line 291, in setUp self.setupContext(ancestor) File "/Library/Python/2.7/site-packages/nose/suite.py", line 314, in setupContext try_run(context, names) File "/Library/Python/2.7/site-packages/nose/util.py", line 469, in try_run return func() File "/Users/patila14/Desktop/experimental short scripts/one_setup.py", line 13, in setUpClass print a NameError: global name ''a'' is not defined ----------------------------------------------------------------------

por supuesto, si lo hace gloabl a global b , funcionará. ¿Hay alguna manera mejor?