我有一个简单的测试课
@pytest.mark.incremental
class TestXYZ:
def test_x(self):
print(self)
def test_y(self):
print(self)
def test_z(self):
print(self)
运行此命令时,将得到以下输出:
test.TestXYZ对象位于0x7f99b729c9b0
test.TestXYZ对象位于0x7f99b7299b70
位于0x7f99b7287eb8的testTestXYZ对象
这表示在TestXYZ对象的3个不同实例上调用了3个方法。无论如何,有没有改变这种行为并使pytest在同一个对象实例上调用所有3个方法。这样我就可以使用self来存储一些值。
最佳答案
Sanju在评论中提供了上面的答案,我想引起大家的注意,并提供一个示例。在下面的示例中,您可以使用类的名称来引用类变量,也可以使用相同的语法来设置或操作值,例如在z
测试功能中设置y
的值或更改test_x()
的值。
class TestXYZ():
# Variables to share across test methods
x = 5
y = 10
def test_x(self):
TestXYZ.z = TestXYZ.x + TestXYZ.y # create new value
TestXYZ.y = TestXYZ.x * TestXYZ.y # modify existing value
assert TestXYZ.x == 5
def test_y(self):
assert TestXYZ.y == 50
def test_z(self):
assert TestXYZ.z == 15
关于python - 如何为pytest测试类的所有方法共享同一实例,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45371832/