对于鼻子测试类,使用__init __(self)而不是setup(self)是否有缺点?


问题内容

nosetests -s

class TestTemp():

    def __init__(self):
        print '__init__'
        self.even = 0

    def setup(self):
        print '__setup__'
        self.odd = 1

    def test_even(self):
        print 'test_even'
        even_number = 10
        assert even_number % 2 == self.even

    def test_odd(self):
        print 'test_odd'
        odd_number = 11
        assert odd_number % 2 == self.odd

打印出以下内容。

__init__
__init__
__setup__
test_even
.__setup__
test_odd
.

测试实例是在测试运行之前创建的,而安装程序是在测试之前运行的。

对于一般情况,__init__()setup()完成相同的操作,但是使用__init__()替代setup()有不利之处吗?还是同时使用?


问题答案:

虽然__init__可以代替setUp,但您应该坚持使用setUp它,因为它是编写测试的风格化协议的一部分。它也有一个对口tearDown,这__init__不,还有讲座和模块级的同行,其__init__没有。

编写测试类与编写普通类不同,因此,您应遵循编写测试类的风格。