我有一个类,我想在各种测试用例/文件中使用它来测试某些条件。 类似于以下内容:
class MyTester:
@staticmethod
def does_string_apply(my_string: str) -> bool:
return my_string == 'Hello World'
我想在各种测试文件中的各种测试用例中使用该类,这就是为什么我在conftest中定义它并提供一个固定装置来访问该类。
@pytest.fixture(name=my_tester)
def fixture_my_tester() -> type[MyTester]:
return MyTester
测试用例中使用了该夹具,但未导入类名。因此,我不知道如何输入提示夹具:
def test_something(my_tester: type['What goes here?']) -> None:
assert my_tester.does_string_apply("Hello")
因此,为未来的读者提供一些有关 Pytest 的背景知识 - 在测试中,您可以指定一个参数名称,该名称可以连接到不同文件中的固定装置,因此不一定需要导入该类(在输入之外)。
简短的答案很简单:
from .conftest import MyTester
conftest 可能无法通过这种方式访问,在这种情况下,您可以将
MyTester
放入包的 utils 部分。
如果测试系统担心循环导入,您也可以这样导入:
if typing.TYPE_CHECKING:
from .conftest import MyTester
我觉得 pytest 最初设计时并没有考虑到打字,但它确实公开了足够的选项,可以让它工作。希望这有帮助!