如何为pytest测试类的所有方法共享同一个实例

2024-06-28 06:47:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个简单的测试课

@pytest.mark.incremental
class TestXYZ:

    def test_x(self):
        print(self)

    def test_y(self):
        print(self)

    def test_z(self):
        print(self)

运行此程序时,我得到以下输出:

在测试.TestXYZ对象位于0x7f99b729c9b0

在测试.TestXYZ对象位于0x7f99b7299b70

位于0x7f99b7287eb8的testTestXYZ对象

这表明这3个方法是在TestXYZ对象的3个不同实例上调用的。有没有办法改变这种行为并让pytest调用同一个对象实例上的所有3个方法。所以我可以用自我来储存一些价值。在


Tags: 对象实例方法testself程序pytestdef
1条回答
网友
1楼 · 发布于 2024-06-28 06:47:22

Sanju在评论中给出了上述答案,我想引起大家对这个答案的关注,并提供一个例子。在下面的示例中,您使用类的名称来引用类变量,您还可以使用相同的语法来设置或操作值,例如,在test_x()测试函数中设置z的值或更改{}的值。在

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

相关问题 更多 >