Носовые тестовые генераторы внутри класса
Можно ли запускать генераторы носовых тестов внутри пользовательских классов? Я пытаюсь преобразовать пример в простую версию на основе класса:
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
Это приводит к
$ nosetests -v trial.py
----------------------------------------------------------------------
Ran 0 tests in 0.000s
Я просмотрел журнал изменений и считаю, что это должно работать с версии 0.9.0a1.
Где я иду не так?
Ответы
Ответ 1
Решение является менее ожидаемым: НЕ подкласс от unittest.TestCase
, чтобы носетисты обнаружили метод генератора. Код, работающий с nosetests 1.1.3 (последний из 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
Кроме того, используйте TestA
вместо 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
Ответ 2
Я считаю, что вы должны подклассифицировать 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