gpt4 book ai didi

python - Django TestCase 在测试完成运行后不会销毁测试数据

转载 作者:行者123 更新时间:2023-12-01 01:37:08 26 4
gpt4 key购买 nike

我目前正在尝试为应用程序编写第一个 Django 规范。但是,每次运行测试时,我都会收到 IntegrityError: UNIQUEconstraint failed: auth_user.username ,因为我在上次运行测试中创建的用户现在存在于数据库中。

我的印象是 TestCase 将测试代码包含在数据库事务中,以便测试期间创建的所有数据在完成时回滚?我在这里做错了什么?

from django.test import TestCase

from django.contrib.auth.models import User
from basic.models import SavedModels

# Create your tests here.
class SavedModelsTestCase(TestCase):
User.objects.create(username="user_001",
password="useruser",
first_name="Test",
last_name="User",
email="test_user@test.com"
)

user = User.objects.filter(username="user_001")
saved_model = SavedModels.objects.create(name="Test Model",
description="A model",
user=user
)

def test_saved_models(self):
saved_model = create_saved_model()
self.assertTrue(isinstance(saved_model, SavedModels))
self.assertEqual(saved_model.name, "Test Model")
self.assertEqual(saved_model.description, "A model")
self.assertEqual(saved_model.user, user)

最佳答案

它不是这样工作的,您需要两个名为 setup 的函数来设置所需的数据(它在测试开始时运行),您需要在此处创建用户并tearDown(它在测试结束时运行)添加这两个之后运行该测试后进行清理,您的代码将变成这样

class SavedModelsTestCase(TestCase):

def setUp(self):
#create your user here
def tearDown(self):
# for any clenaup required none in your case

def test_saved_models(self):
saved_model = create_saved_model()
self.assertTrue(isinstance(saved_model, SavedModels))
self.assertEqual(saved_model.name, "Test Model")
self.assertEqual(saved_model.description, "A model")
self.assertEqual(saved_model.user, user)

关于python - Django TestCase 在测试完成运行后不会销毁测试数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52290984/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com