python generator nose

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