gpt4 book ai didi

django - 在 Django 中加载用于 Selenium 测试的装置时出现完整性错误

转载 作者:行者123 更新时间:2023-12-04 10:50:09 28 4
gpt4 key购买 nike

我想为我的 Selenium 测试加载一个固定装置。在我的初始测试中使用夹具是成功的,所以我知道我能够在我的测试设置中加载夹具并在我的测试中使用它们。我尝试了几种方法。
首先,我生成了特定于我使用 dumpdata 测试的模型的装置。一个例子如下:

python manage.py dumpdata protocols.Step --indent=2 > functional_tests/fixtures/step.json

在我的测试中使用时:
class SignInTest(FunctionalTest):
fixtures = ['admin_user.json', 'protocol.json', 'step.json',
'protocol_element.json']

def test_login_and_view_user_data(self):
...

我得到错误:
django.db.utils.IntegrityError: Problem installing fixtures: The row in table 'protocols_protocolelement' with primary key '37' has an invalid foreign key: protocols_protocolelement.element_content_type_id contains a value '41' that does not have a corresponding value in django_content_type.id.

第二次尝试涉及使用我表中的所有测试数据,但不包括内容类型:
python manage.py dumpdata --indent=2 -e contenttypes > functional_tests/fixtures/initial_data.json

class SignInTest(FunctionalTest):
fixtures = ['initial_data.json']
...

得到错误:
django.db.utils.OperationalError: Problem installing fixture '.../mike/mike/functional_tests/fixtures/initial_data.json': Could not load auth.Permission(pk=103): no such table: auth_permission

接下来,我尝试使用 natural 来显示自然键:
python manage.py dumpdata --natural -e contenttypes -e auth.Permission --indent=2 > functional_tests/fixtures/initial_data2.json

只是为了得到错误:
django.db.utils.OperationalError: Problem installing fixture '.../mike/mike/functional_tests/fixtures/initial_data.json': Could not load auth.User(pk=1): no such table: auth_user

注意到自然折旧我尝试了 --natural-foreign 并希望包括用户和权限模型(无论如何我需要我的模型的内容类型):
python manage.py dumpdata --natural-foreign --indent=2 > functional_tests/fixtures/initial_data3.json

只是为了得到错误:
django.db.utils.IntegrityError: Problem installing fixture '.../mike/mike/functional_tests/fixtures/initial_data3.json': Could not load contenttypes.ContentType(pk=35): UNIQUE constraint failed: django_content_type.app_label, django_content_type.model

那么,关于如何加载夹具以便我可以运行测试的任何想法?我错过了一些简单的东西吗?谢谢!

最佳答案

在阅读了更多关于 Django 如何维护自己的模型等之后,我的理解是 Django 缓存 contenttype、auth.Permission 等并在测试框架中使用它们(我使用的是 StaticLiveServerTestCase)。这意味着当我加载我的装置时,它与 Django 为自己使用而存储的数据发生冲突,导致完整性错误。这对我有用:

python manage.py dumpdata -e contenttypes -e admin -e auth.Permission --natural-foreign --indent=2 > functional_tests/fixtures/initial_data4.json

这篇文章有一些额外的有用信息来帮助我解决问题:
Problems with contenttypes when loading a fixture in Django .

关于django - 在 Django 中加载用于 Selenium 测试的装置时出现完整性错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27499030/

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