在 pytest 参数化中使用 self

use*_*923 5 python pytest

如何parametrize在类中组织的测试中使用 pytest 中的属性?

import pytest

class TestA:
    @pytest.fixture(autouse=True)
    def set_up(self):
        self.field1 = "field1"
        self.field2 = "field2"

    @pytest.mark.parametrize("field", (self.field1, self.field2))
    def test_print_field(self, field):
        print(field, flush=False)
Run Code Online (Sandbox Code Playgroud)

我越来越NameError: name 'self' is not defined

小智 1

可能不是最佳实践,但这里有一些可以完成工作的方法:

@pytest.mark.parametrize("field", ("field1", "field2"))
def test_print_field(self, field):
    print(eval(f"self.{field}"), flush=False)
Run Code Online (Sandbox Code Playgroud)

您可能想使用固定装置来安装和拆卸。

  • 这只会导致“TypeError: TestA.test_print_field() miss 1 requiredpositional argument: 'field'” (2认同)