如何导入/引用多个pytest fixture没有通配符导入?



目前我使用以下设置从一个名为fixtures.py的文件导入pytest fixture并使用它们运行测试:

from django.contrib.auth.models import User, Group
from django.core import mail
from main.tests.fixtures import user_a, group_dropoff_for_qc
def test_should_check_password(db, user_a: User) -> None:
user_a.set_password("secret")
assert user_a.check_password("secret") is True
# more tests here

当我编写更多的测试和使用更多的fixture时,来自main.tests.fixtures的导入列表变得非常长。是否有一些内置的pytest方法来解决这个问题?这似乎是一个如此常见的操作,应该有一个更精简的方法。

我自己找到了答案,所以这里是解决方案,以防这对其他人有帮助。

解决方案来源:https://www.tutorialspoint.com/pytest/pytest_conftest_py.htm

如果您将包含fixture的外部文件重命名为conftest.py,则可以引用该文件中的fixture而无需显式导入它们。因此,在上面的例子中,我只需要将fixtures.py重命名为conftest.py,这允许我按预期运行测试,而不需要import语句:

from django.contrib.auth.models import User, Group
from django.core import mail
def test_should_check_password(db, user_a: User) -> None:
user_a.set_password("secret")
assert user_a.check_password("secret") is True
# more code here

最新更新