IntegrityError:唯一约束失败:roomer_房间.id在Django测试cas中

2024-09-29 23:27:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个测试用例,我想通过从数据库中获取数据来检查分配房间的匈牙利算法。因此,我在setUp方法中创建了几个对象来填充一些数据。但是,在执行测试时,它们会失败(本质上,setUp失败),堆栈跟踪如下:

======================================================================
ERROR: test_hungarian_on_users (allocation.tests.TestHungarian)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/Users/parthshukla/roomer/allocation/tests.py", line 68, in setUp
    code='MA-302'
  File "/Users/parthshukla/roomer/venv/lib/python2.7/site-packages/django/db/models/manager.py", line 122, in manager_method
    return getattr(self.get_queryset(), name)(*args, **kwargs)
  File "/Users/parthshukla/roomer/venv/lib/python2.7/site-packages/django/db/models/query.py", line 401, in create
    obj.save(force_insert=True, using=self.db)
  File "/Users/parthshukla/roomer/roomer/models.py", line 297, in save
    super(Room, self).save(kwargs)
  File "/Users/parthshukla/roomer/venv/lib/python2.7/site-packages/django/db/models/base.py", line 708, in save
    force_update=force_update, update_fields=update_fields)
  File "/Users/parthshukla/roomer/venv/lib/python2.7/site-packages/django/db/models/base.py", line 736, in save_base
    updated = self._save_table(raw, cls, force_insert, force_update, using, update_fields)
  File "/Users/parthshukla/roomer/venv/lib/python2.7/site-packages/django/db/models/base.py", line 820, in _save_table
    result = self._do_insert(cls._base_manager, using, fields, update_pk, raw)
  File "/Users/parthshukla/roomer/venv/lib/python2.7/site-packages/django/db/models/base.py", line 859, in _do_insert
    using=using, raw=raw)
  File "/Users/parthshukla/roomer/venv/lib/python2.7/site-packages/django/db/models/manager.py", line 122, in manager_method
    return getattr(self.get_queryset(), name)(*args, **kwargs)
  File "/Users/parthshukla/roomer/venv/lib/python2.7/site-packages/django/db/models/query.py", line 1039, in _insert
    return query.get_compiler(using=using).execute_sql(return_id)
  File "/Users/parthshukla/roomer/venv/lib/python2.7/site-packages/django/db/models/sql/compiler.py", line 1060, in execute_sql
    cursor.execute(sql, params)
  File "/Users/parthshukla/roomer/venv/lib/python2.7/site-packages/django/db/backends/utils.py", line 64, in execute
    return self.cursor.execute(sql, params)
  File "/Users/parthshukla/roomer/venv/lib/python2.7/site-packages/django/db/utils.py", line 95, in __exit__
    six.reraise(dj_exc_type, dj_exc_value, traceback)
  File "/Users/parthshukla/roomer/venv/lib/python2.7/site-packages/django/db/backends/utils.py", line 64, in execute
    return self.cursor.execute(sql, params)
  File "/Users/parthshukla/roomer/venv/lib/python2.7/site-packages/django/db/backends/sqlite3/base.py", line 323, in execute
    return Database.Cursor.execute(self, query, params)
IntegrityError: UNIQUE constraint failed: roomer_room.id

----------------------------------------------------------------------

这个错误似乎源于对房客的完整性约束_房间.id(django-generated-UUID)表示存在具有该ID的房间。但是,错误源于第68行(对Room.objects.create()的第一次调用)前面的Room.objects.all()返回一个空数组。因此,Room表中没有其他对象是有意义的,因为django测试在生成测试用例时创建一个新数据库,并在分解时销毁它。以下是测试用例以供参考。在

^{pr2}$

Tags: djangoinpyselfdbvenvmodelslib

热门问题