我最近从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
答案 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中的问题。