如果我没有任何拆解,我需要使用 setup_module,还是可以只使用顶级语句?
=== test_1.py ===
foo = 3
def test_foo(): assert foo == 3
=== test_2.py
def setup_module(m): m.foo = 3
def test_foo(): assert foo == 3
py.test 会在执行第一个测试之前按顺序执行所有顶级语句吗?
谢谢!
如果我没有任何拆解,我需要使用 setup_module,还是可以只使用顶级语句?
=== test_1.py ===
foo = 3
def test_foo(): assert foo == 3
=== test_2.py
def setup_module(m): m.foo = 3
def test_foo(): assert foo == 3
py.test 会在执行第一个测试之前按顺序执行所有顶级语句吗?
谢谢!
似乎 py.test 会在任何测试之前评估您的顶级语句,所以test_1.py
会起作用。
但是,当您编写测试时,拥有任何顶级语句通常不是一个好主意。您应该尝试将您的测试结构化为测试用例(一个包含相关测试代码的类)并测试应用程序的特定功能。所以,如果你把你的代码 ( test_2.py
) 变成一个测试用例,它看起来像这样:
def setup_module(module):
module.TestFoo.foo = 3
class TestFoo:
def test_foo(self):
assert self.foo == 3
这样,您可以继续向每个模块添加所有相关测试TestFoo
,甚至添加多个测试TestCase
(尽管通常最好将每个测试都TestCase
放在自己的文件中)。
关于您的teardown_module
问题,您只需要在需要将应用程序状态恢复到其初始状态(删除新创建的项目等)或清理挂起的连接(关闭文件、套接字等)时进行拆卸。在这种情况下,由于您setup_module
没有做任何需要清理的事情,因此不需要拆解并且 py.test 不会抱怨缺少它。