如何输入conftest中定义并从fixture返回的提示类

问题描述 投票:0回答:1

我有一个类,我想在各种测试用例/文件中使用它来测试某些条件。 类似于以下内容:

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")
python pytest python-typing fixtures
1个回答
0
投票

因此,为未来的读者提供一些有关 Pytest 的背景知识 - 在测试中,您可以指定一个参数名称,该名称可以连接到不同文件中的固定装置,因此不一定需要导入该类(在输入之外)。

简短的答案很简单:

from .conftest import MyTester

conftest 可能无法通过这种方式访问,在这种情况下,您可以将

MyTester
放入包的 utils 部分。

如果测试系统担心循环导入,您也可以这样导入:

if typing.TYPE_CHECKING:
    from .conftest import MyTester

我觉得 pytest 最初设计时并没有考虑到打字,但它确实公开了足够的选项,可以让它工作。希望这有帮助!

© www.soinside.com 2019 - 2024. All rights reserved.