Python Py.test失败,但./manage.Py测试工作正常

Python Py.test失败,但./manage.Py测试工作正常,python,unit-testing,selenium,pytest,pytest-django,Python,Unit Testing,Selenium,Pytest,Pytest Django,我最近接管了一个代码库,我开始添加Selenium测试,然后转到py.test。由于并行性和其他第三方软件包,我喜欢py.test,但我注意到py.test的主要问题 代码库是Django堆栈(Python2.7上的1.8,pytest-2.6.4,目前没有x-dist) 1) py.test测试比普通的django测试套件运行得慢(不太好,但我可以接受) 2) 当我通过执行py.test与Selenium测试一起运行unittests时,一些unittest失败。如果我只使用py.test运行

我最近接管了一个代码库,我开始添加Selenium测试,然后转到py.test。由于并行性和其他第三方软件包,我喜欢py.test,但我注意到py.test的主要问题

代码库是Django堆栈(Python2.7上的1.8,pytest-2.6.4,目前没有x-dist)

1) py.test测试比普通的django测试套件运行得慢(不太好,但我可以接受)

2) 当我通过执行
py.test
与Selenium测试一起运行unittests时,一些unittest失败。如果我只使用py.test运行unittest(通过使用
@skipUnless
装饰器排除),那么一切都会顺利通过。当我使用
/manage.py test
运行(unittest和selenium)时,所有测试都可以正常运行

py.tests失败(在使用unittest和selenium运行时),出现一个奇怪的错误,
DoesNotExist:ActionType匹配查询不存在。

py.test运行的测试与普通Django测试套件不同吗?

当我将unittest与Selenium测试一起运行时,有什么建议说明unittest失败的原因吗?


Selenium测试是在失败的单元测试之前执行的,但它们涉及到代码的一个非常不同的区域(不同的模块)。

我刚刚修复了一个类似的情况。问题是查询无法返回我期望存在的对象

事实证明,它们应该是由信号处理程序创建的。这些处理程序在导入时在signals.py中注册,如

@receiver(post_save, sender=CustomUser)                                         
def create_email_verification(sender, instance, created, **kwargs):             
signals.py是从相应模块的导入的

事实证明,应用程序配置从未加载(由于缺少
默认的\u app\u config
),但Django还是加载了signals.py。但是,当运行py.test时,没有加载模块(因为它没有在其他任何地方导入),因此信号处理程序从未注册


结论:
manage.py test
似乎自动导入了一些模块,而py.test没有。可能有一些代码(信号处理程序)没有以其他方式显式导入。

我刚刚修复了一个类似的情况。问题是查询无法返回我期望存在的对象

事实证明,它们应该是由信号处理程序创建的。这些处理程序在导入时在signals.py中注册,如

@receiver(post_save, sender=CustomUser)                                         
def create_email_verification(sender, instance, created, **kwargs):             
signals.py是从相应模块的导入的

事实证明,应用程序配置从未加载(由于缺少
默认的\u app\u config
),但Django还是加载了signals.py。但是,当运行py.test时,没有加载模块(因为它没有在其他任何地方导入),因此信号处理程序从未注册


结论:
manage.py test
似乎自动导入了一些模块,而py.test没有。可能有一些代码(信号处理程序)没有以其他方式显式导入。

如何定义失败的测试用例?我认为django和pytest收集测试用例的方式不同,因此您的问题可能只是测试用例的顺序。检查它们是否以相同的顺序运行,尤其是操纵
ActionType
模型的部分,或者如果没有太多工作,则尝试设置显式的测试顺序(这不是一个好的做法,因为测试用例应该是独立的,但您可能会找到它们不独立的地方).您如何定义失败的测试用例?我认为django和pytest收集测试用例的方式不同,因此您的问题可能只是测试用例的顺序。检查它们是否以相同的顺序运行,尤其是操纵
ActionType
模型的部分,或者如果没有太多工作,则尝试设置显式的测试顺序(这不是一个好的做法,因为测试用例应该是独立的,但您可能会找到它们不独立的地方)。