2014-11-16 60 views
2

我使用燈具來預先填充一些簡單的輔助數據。由於夾具加載問題,Django單元測試失敗

我可以使用manage.py loaddata fixtures/initial_data.json成功加載燈具。

當我嘗試運行單元測試時出現問題。它給我以下錯誤:

File "/usr/local/lib/python3.4/dist-packages/django/db/models/query.py", line 600, in _update 
    return query.get_compiler(self.db).execute_sql(CURSOR) 
    File "/usr/local/lib/python3.4/dist-packages/django/db/models/sql/compiler.py", line 1004, in execute_sql 
    cursor = super(SQLUpdateCompiler, self).execute_sql(result_type) 
    File "/usr/local/lib/python3.4/dist-packages/django/db/models/sql/compiler.py", line 786, in execute_sql 
    cursor.execute(sql, params) 
    File "/usr/local/lib/python3.4/dist-packages/django/db/backends/utils.py", line 65, in execute 
    return self.cursor.execute(sql, params) 
    File "/usr/local/lib/python3.4/dist-packages/django/db/utils.py", line 94, in __exit__ 
    six.reraise(dj_exc_type, dj_exc_value, traceback) 
    File "/usr/local/lib/python3.4/dist-packages/django/utils/six.py", line 549, in reraise 
    raise value.with_traceback(tb) 
    File "/usr/local/lib/python3.4/dist-packages/django/db/backends/utils.py", line 65, in execute 
    return self.cursor.execute(sql, params) 
django.db.utils.ProgrammingError: Problem installing fixture '/opt/prjoect/myapp/fixtures/initial_data.json': Could not load myapp.SomeModel(pk=1): relation "myapp_somemodel" does not exist 
LINE 1: UPDATE "myapp_somemodel" SET "name" = 'M' WHERE "myapp_somemodel"."id" = 1 

以下表在常規數據庫中呈現。該夾具不具有外鍵,只有簡單的表格,具有鍵和其他值。
我的遷移模塊中只有一個initial_migration。

問題在哪裏?我不知道可能是什麼原因。

我使用Django 1.7,蟒蛇3.4,Postrgesql,Ubuntu的14.04

+0

當前的解決辦法是禁用遷移 –

回答

1

看來你的燈具試圖更新ID爲對象= 1:

LINE 1: UPDATE "myapp_somemodel" SET "name" = 'M' WHERE "myapp_somemodel"."id" = 1 

這個對象不存在:

Could not load myapp.SomeModel(pk=1)... 
  • 你有myapp_somemodel1與ID /包= 1的對象?

也許你在生成夾具時以及在刪除它之後已經擁有了它。你可以嘗試在殼裏做:

from myapp.models import somemodel 

new_object = Somemodel(id=1, name='anything') 
new_object.save() 

,然後嘗試加載夾具再次

+0

不,我沒有'''myapp_somemodel''',這就是爲什麼我把initial_data.json。 有趣的事情 - 如果我禁用遷移使用: '''MIGRATION_MODULES = {「myapp」:「migrations_not_used_in_tests」}'' 夾具正確上傳,但如果我註釋掉這個選項,錯誤再次出現。我認爲根本原因是遷移。 –