目前我使用以下设置从一个名为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