[英]How is setup_module() different from top-level statements in 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不会抱怨它缺少它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.