1

如果我没有任何拆解,我需要使用 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 会在执行第一个测试之前按顺序执行所有顶级语句吗?

谢谢!

4

1 回答 1

1

似乎 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 不会抱怨缺少它。

于 2012-10-03T03:54:41.940 回答