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

Tag*_*sen 7 python nose

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

打印出以下内容.

__init__
__init__
__setup__
test_even
.__setup__
test_odd
.
Run Code Online (Sandbox Code Playgroud)

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

对于一般情况,__init__()setup()完成同样的事情,但是使用__init__()而不是setup()有缺点吗?或两者兼用?

Ned*_*der 2

虽然__init__可以作为 的替代品setUp,但您应该坚持使用,setUp因为它是编写测试的程式化协议的一部分。它还有一个对应的 ,tearDown__init__没有,以及类和模块级别的对应,但__init__没有。

编写测试类与编写普通类不同,因此您应该坚持编写测试类所用的风格。