Django:一项测试失败后,所有后续测试都会失败

时间:2020-05-26 15:29:33

标签: python django python-unittest pytest-django

我最近从Python 2.7移到了Python 3.8。运行测试时有一个奇怪的新现象,可以通过以下简单示例重现:

FROM mcr.microsoft.com/dotnet/framework/sdk:4.8-windowsservercore-ltsc2016
COPY AWSCLIV2.msi .
RUN Start-Process msiexec.exe -Wait -ArgumentList '/I AWSCLIV2.msi /quiet /qn /norestart /log awscli.log'
RUN rm AWSCLIV2.msi

from django.test import TestCase from users.models import User class TestWTF(TestCase): def setUp(self): self.user = User.objects.create(email='admin@project.com') def test_failure(self): self.assertTrue(False) def test_success(self): pass 失败时,test_failure()对象不会从数据库中删除。似乎没有实现承诺的回滚功能。 self.user尝试再次创建对象时,test_success()和同一类中的所有后续测试都将失败,并且违反UNIQUE约束。

在Python 2中不会发生。

我正在使用setUp()的部分输出:

pytest

编辑:我正在使用Django-1.11.26

1 个答案:

答案 0 :(得分:0)

我在python 3.6上的Django 2.2上也遇到了同样的问题。

我正在使用pytest 5.4.1和pytest-django 3.8.0。

将pytest-django更新到版本3.9.0解决了该问题,因此我认为这是3.8.0中的问题。