繁体   English   中英

Py.test失败,但是./manage.py测试正常

[英]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.testpy.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):             

从相应模块的App配置中导入了signal.py

事实证明,该应用程序配置从未加载(由于缺少default_app_config ),但是Django仍然加载了signal.py。 但是,在通过py.test运行时,模块未加载(因为未在其他任何地方导入),因此从未注册过信号处理程序。

结论: manage.py test似乎会自动导入某些模块,而py.test不会。 可能有一些未明确导入的代码(信号处理程序)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM