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?