ppo*_*ani 5 django postgresql unit-testing
我正在尝试为我的 django 项目运行以下单元测试:
from django.test import TestCase
from django.contrib.auth.models import User
from CarbonEmissions import models
class DbTest(TestCase):
#is called before each test case (e.g test_insertingUserProfiles)
def setUp(self):
self.user = User.objects.create(username='ppoliani')
self.userProfile = models.UserProfile.objects.create(user=self.user, title='Mr', type='student', occupation='student')
def test_insertingUserProfiles(self):
"""
Testing the insertion of user profiles into our datbase
"""
self.assertEqual(self.user.get_profile().title,'Mr')
#is called after each test case (e.g test_insertingUserProfiles)
def tearDown(self):
self.user.delete()
self.userProfile.delete()
Run Code Online (Sandbox Code Playgroud)
测试失败并抛出以下错误:
IntegrityError: duplicate key value violates unique constraint "CarbonEmissions_userprofile_user_id_key" DETAIL: Key (user_id)=(1) already exists.
Run Code Online (Sandbox Code Playgroud)
我不明白该代码有什么问题。
错误消息告诉您约束“CarbonEmissions_userprofile_user_id_key”失败,因为在某些表中,已经有一行 user_id 等于 1。
要解决此问题,最简单的方法可能是使用 pgAdminIII 查看约束和数据,它通常与 PostgreSQL 一起安装。展开表名称以查看列、约束等。展开约束以查看它们的名称和属性。右键单击表名称,然后选择“查看数据”以获取可浏览数据的选项。