[英]Py.test fails, but ./manage.py tests works fine
我最近接管了代码库,并从添加Selenium测试开始,然后转到py.test。 由于并行和其他第三方软件包,我喜欢py.test,但是我注意到py.test的主要问题。
代码库是Django堆栈(Python 2.7上为1.8,pytest-2.6.4,目前没有x-dist)。
1)py.test测试的运行速度比普通的django测试套件慢(不是很好,但是我可以接受)
2)当我通过执行py.test
与py.test
测试一起运行unittests时, 一些unittest失败了 。 如果我仅使用py.test运行unittest(通过使用@skipUnless
装饰器排除在外),那么一切都会顺利进行 。 当我使用./manage.py test
运行(unittest和selenium)时,所有测试都运行良好。
py.tests失败(在运行unittest和selenium时),出现奇怪的错误DoesNotExist: ActionType matching query does not exist.
。
py.test运行测试与普通Django测试套件不同吗?
有什么建议为什么我在与Selenium测试一起运行单元测试时会失败?
Selenium测试在失败的单元测试之前执行,但它们的代码区域非常不同(不同的模块)。
我只是解决了类似的情况。 问题是查询无法返回我期望存在的对象。
原来,它们应该是由信号处理程序创建的。 这些处理程序是在导入时在signals.py中注册的,例如
@receiver(post_save, sender=CustomUser)
def create_email_verification(sender, instance, created, **kwargs):
事实证明,该应用程序配置从未加载(由于缺少default_app_config
),但是Django仍然加载了signal.py。 但是,在通过py.test运行时,模块未加载(因为未在其他任何地方导入),因此从未注册过信号处理程序。
结论: manage.py test
似乎会自动导入某些模块,而py.test不会。 可能有一些未明确导入的代码(信号处理程序)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.