python - Generadores de prueba de nariz dentro de clase
generator nose (2)
Creo que tienes que subclasificar unittest.TestCase
import unittest
class ATest(unittest.TestCase):
def test_evens(self):
for i in range(0, 5):
yield self.check_even, i, i * 3
def check_even(self, n, nn):
assert n % 2 == 0 or nn % 2 == 0
¿Es posible ejecutar generadores de prueba de nariz dentro de las clases personalizadas? Estoy tratando de convertir el example en una versión simple basada en clase:
file: trial.py
>>>>>>>>>>>>>>
class ATest():
def test_evens(self):
for i in range(0, 5):
yield self.check_even, i, i * 3
def check_even(self, n, nn):
assert n % 2 == 0 or nn % 2 == 0
Que resulta en
$ nosetests -v trial.py
----------------------------------------------------------------------
Ran 0 tests in 0.000s
0.9.0a1 un vistazo a la lista de cambios y creo que esto debería funcionar desde la versión 0.9.0a1 .
¿A dónde me voy mal?
La solución es la menos esperada: NO haga una subclase de unittest.TestCase
para que las pruebas nos descubran el método del generador. Código que funciona con las pruebas 1.1.3 (más recientes de GitHub):
class TestA(object):
def test_evens(self):
for i in range(0, 5):
yield self.check_even, i, i * 3
def check_even(self, n, nn):
assert n % 2 == 0 or nn % 2 == 0
Además, use TestA
lugar de ATest
.
test.py:2: TestA.test_evens[0] PASSED
test.py:2: TestA.test_evens[1] FAILED
test.py:2: TestA.test_evens[2] PASSED
test.py:2: TestA.test_evens[3] FAILED
test.py:2: TestA.test_evens[4] PASSED