2

我在几个班级组织了一些测试。我已经有一个 scope=class 的测试夹具,这样它就可以在测试套件(类)之前运行。但是,我需要在一些特定测试后执行一个函数。假设我在一个类中有 100 个测试,我已经有一个夹具可以在这些测试之前执行一个函数,但我还想在 2-3 个这些测试之后运行一个函数。

实现这一目标的最佳方法是什么?可以用固定装置或其他任何东西来完成吗?

4

3 回答 3

2

首先,编写一个将在测试完成后执行的夹具:

@pytest.fixture
def foo():
    yield
    print("do stuff after test")

文档:夹具完成/执行拆卸代码

现在标记每个应该调用这个夹具的测试usefixtures("foo")

@pytest.mark.usefixtures("foo")
def test_spam():
    ...

文档:在类和模块中使用固定装置usefixtures

于 2021-01-08T09:35:59.427 回答
0

如果您使用的是 python 的内置 unittest 模块,您可以覆盖该tearDown方法以在类中的每个测试之后运行某些东西。

如果您使用 pytest 的框架并使用 pytests 固定装置,则可以yield在固定装置中使用关键字。

它记录在https://doc.pytest.org/en/latest/fixture.html#teardown-cleanup-aka-fixture-finalization中。

于 2021-01-07T14:03:25.233 回答
0

如果您知道要运行的特定测试,那么您可以在 .csv 中为每个测试设置不同的值,例如 (index) (column) (column) Tests Test# Complete? 测试 1 1 T 测试 2 2 F

import pandas as pd 
#makes panda read your file and sets the variable as the data in the file
data = pd.read_csv("filename.csv") 
#Gets the value from the column 'test#' and 'complete' and sets as a variable
Var1 = DataFrame.get_value("the number test you want to take", 'Complete?')
If Var1 = T 
   #Run the rest of your program here
#Then you can just repeat this for the other tests you want to check for 

这不是最漂亮的解决方案,但它有效

于 2021-01-07T14:21:14.720 回答