为
运行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()有不利之处吗?或者同时使用两者?
答案 0 :(得分:2)
是的,你应该为测试创建一个干净的平板,并保持你的个别测试。
看起来测试实例(每个测试一个)是在一个批处理中创建的,而setup
是在每个测试之前调用的。如果您的设置需要重置外部状态,则需要在setup
中执行此操作;如果你要在__init__
进行单独的测试,可以在其余的测试运行中搞砸那个外部状态。
答案 1 :(得分:2)
虽然__init__
可以替代setUp
,但您应该坚持使用setUp
,因为它是编写测试的程式化协议的一部分。它还有一个tearDown
,__init__
没有,__init__
没有的类和模块级对应物。
编写测试类与编写普通类不同,因此您应该坚持使用用于编写测试类的样式。