2024-05-12 17:59:33 发布
网友
我正在使用pytest测试我的应用程序。 pytest支持两种编写测试的方法(据我所知):
test_feature.py -> class TestFeature -> def test_feature_sanity
test_feature.py -> def test_feature_sanity
是否需要在课堂上分组测试?是否允许将unittest内置模块向后移植? 你认为哪种方法更好?为什么?在
提前谢谢!在
通常在单元测试中,我们测试的对象是单个函数。也就是说,一个函数会产生多个测试。在阅读测试代码时,将单个单元的测试以某种方式组合在一起是很有用的(这也允许我们运行特定功能的所有测试),因此我们有两个选择:
在第一种方法中,我们仍然有兴趣以某种方式对与源模块(例如utils.py)相关的所有测试进行分组。现在,由于我们已经使用模块对函数的测试进行分组,这意味着我们应该使用包对源模块的测试进行分组。在
utils.py
结果是一个源函数映射到一个测试模块,一个源模块映射到一个测试包。在
在第二种方法中,我们将使用一个源函数映射到一个测试类(例如my_function()->;TestMyFunction),而一个源模块映射到一个测试模块(例如utils.py->;test_utils.py)。在
my_function()
TestMyFunction
test_utils.py
这可能取决于具体情况,但第二种方法,即对您正在测试的每个函数进行一类测试,对我来说似乎更清楚。此外,如果我们正在测试sourceclasses/方法,那么我们可以简单地使用测试类的继承层次结构,并且仍然保留一个源模块->一个测试模块映射。在
最后,与包含多个函数测试的平面文件相比,这两种方法的另一个好处是,在类/模块已经确定要测试的函数的情况下,可以为实际测试使用更好的名称,例如test_does_x和{},而不是{}和{}。在
test_does_x
对于将测试组织成模块和类,没有严格的规则。这是个人喜好的问题。一开始我就意识到,组织考试的时间不多了。现在我只是将测试函数收集到模块(文件)中。在
我可以看到一个有效的用例,当一些测试可以逻辑地组织到同一个文件中,但是仍然有额外的层次组织到类中(例如使用类范围的fixture)。但也可以将其拆分为多个模块。在
通常在单元测试中,我们测试的对象是单个函数。也就是说,一个函数会产生多个测试。在阅读测试代码时,将单个单元的测试以某种方式组合在一起是很有用的(这也允许我们运行特定功能的所有测试),因此我们有两个选择:
在第一种方法中,我们仍然有兴趣以某种方式对与源模块(例如
utils.py
)相关的所有测试进行分组。现在,由于我们已经使用模块对函数的测试进行分组,这意味着我们应该使用包对源模块的测试进行分组。在结果是一个源函数映射到一个测试模块,一个源模块映射到一个测试包。在
在第二种方法中,我们将使用一个源函数映射到一个测试类(例如
my_function()
->;TestMyFunction
),而一个源模块映射到一个测试模块(例如utils.py
->;test_utils.py
)。在这可能取决于具体情况,但第二种方法,即对您正在测试的每个函数进行一类测试,对我来说似乎更清楚。此外,如果我们正在测试sourceclasses/方法,那么我们可以简单地使用测试类的继承层次结构,并且仍然保留一个源模块->一个测试模块映射。在
最后,与包含多个函数测试的平面文件相比,这两种方法的另一个好处是,在类/模块已经确定要测试的函数的情况下,可以为实际测试使用更好的名称,例如},而不是{}和{}。在
test_does_x
和{对于将测试组织成模块和类,没有严格的规则。这是个人喜好的问题。一开始我就意识到,组织考试的时间不多了。现在我只是将测试函数收集到模块(文件)中。在
我可以看到一个有效的用例,当一些测试可以逻辑地组织到同一个文件中,但是仍然有额外的层次组织到类中(例如使用类范围的fixture)。但也可以将其拆分为多个模块。在
相关问题 更多 >
编程相关推荐