Class中的鼻子测试生成器

Lon*_*ine 19 python generator nose

是否可以在自定义类中运行nose测试生成器?我试图将示例转换为基于类的简单版本:

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
Run Code Online (Sandbox Code Playgroud)

这导致了

$ nosetests -v trial.py
----------------------------------------------------------------------
Ran 0 tests in 0.000s
Run Code Online (Sandbox Code Playgroud)

我查看了更改日志,并认为这应该从版本0.9.0a1开始工作.

我哪里错了?

and*_*cho 35

解决方案是较不期望的解决方案:不要进行子类化unittest.TestCase以便让nosetests发现生成器方法.代码使用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
Run Code Online (Sandbox Code Playgroud)

另外,使用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
Run Code Online (Sandbox Code Playgroud)

  • @ChrisR:您可以使用`nose.tools.assert_raises_regexp` (4认同)