- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我开始使用 factory_boy
包,所以我设置了一些工厂并想测试创建的对象不会引发任何验证错误。
这是我正在使用的 mixin,它基本上从模块中获取每个工厂,创建一个实例,然后测试 .full_clean()
中没有错误.加载的用户设备是 10 个实例,ID 为 1 到 10。
class FactoriesTestCaseMixin:
fixtures = [
'user/tests/fixtures/user.json',
]
module = None
def test_factories(self):
err_msg = '{name} caused errors:\n{errors}'
factories = [
(name, obj) for name, obj in inspect.getmembers(self.module, inspect.isclass)
if obj.__module__ == self.module.__name__
and not obj._meta.abstract
]
for factory in factories:
name = factory[0]
instance = factory[1]()
errors = None
try:
instance.full_clean()
except ValidationError as e:
errors = e
self.assertTrue(errors is None, err_msg.format(name=name, errors=errors))
from django.test import TestCase
from order import factories
class OrderFactoriesTestCase(FactoriesTestCaseMixin, TestCase):
module = factories
IntegrityError
(下面的追溯)在测试成功通过夹具拆卸之后,我不知道如何解决它,所以我的测试通过没有错误。
created_by
的灯具都不会出现问题。 field 。
django.db.utils.IntegrityError: insert or update on table "product_product" violates foreign key constraint "product_product_created_by_id_96713f93_fk_user_user_id"
DETAIL: Key (created_by_id)=(13) is not present in table "user_user".
Iterator
正在选择一个新的用户 ID。.. 仍然不确定为什么在成功通过测试后会导致错误。
created_by = factory.Iterator(User.objects.all())
SubFactory
到
ProductFactory
product = factory.SubFactory(ProductFactory)
Traceback (most recent call last):
File "/home/Development/project/venv/lib/python3.7/site-packages/django/test/testcases.py", line 274, in __call__
self._post_teardown()
File "/home/Development/project/venv/lib/python3.7/site-packages/django/test/testcases.py", line 1009, in _post_teardown
self._fixture_teardown()
File "/home/Development/project/venv/lib/python3.7/site-packages/django/test/testcases.py", line 1177, in _fixture_teardown
connections[db_name].check_constraints()
File "/home/Development/project/venv/lib/python3.7/site-packages/django/db/backends/postgresql/base.py", line 246, in check_constraints
self.cursor().execute('SET CONSTRAINTS ALL IMMEDIATE')
File "/home/Development/project/venv/lib/python3.7/site-packages/django/db/backends/utils.py", line 67, in execute
return self._execute_with_wrappers(sql, params, many=False, executor=self._execute)
File "/home/Development/project/venv/lib/python3.7/site-packages/django/db/backends/utils.py", line 76, in _execute_with_wrappers
return executor(sql, params, many, context)
File "/home/Development/project/venv/lib/python3.7/site-packages/django/db/backends/utils.py", line 84, in _execute
return self.cursor.execute(sql, params)
File "/home/Development/project/venv/lib/python3.7/site-packages/django/db/utils.py", line 89, in __exit__
raise dj_exc_value.with_traceback(traceback) from exc_value
File "/home/Development/project/venv/lib/python3.7/site-packages/django/db/backends/utils.py", line 82, in _execute
return self.cursor.execute(sql)
django.db.utils.IntegrityError: insert or update on table "product_product" violates foreign key constraint "product_product_created_by_id_96713f93_fk_user_user_id"
DETAIL: Key (created_by_id)=(12) is not present in table "user_user".
最佳答案
我有一个相关的问题,我通过专门 _fixture_teardown
解决了这个问题在我的测试用例类中。_fixture_teardown
在 django.test.testcases
中实现调用 django 命令“flush”,该命令尝试从数据库中删除所有数据。我不知道这对你是否有用。在我持久化测试数据库并使用 --keepdb
的场景中,它引起了问题。
由于我不需要(或不想)刷新测试数据库,我只是专门指定了该方法什么都不做。这解决了我的问题,可能有助于解决你的问题。
关于python - Django 在夹具拆解中测试 IntegrityError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57923495/
是否可以设置一个夹具来创建数据库 View 而不是 CakePHP 中的数据库表?在创建表的夹具和另一个应该是数据库 View 的夹具中使用相同的数据似乎效率低下。 最佳答案 我设法这样做,其中 vi
与这个锦标赛赛程算法作斗争。 代码运行良好,但我需要帮助将数据插入 mysql我似乎无法访问 $varables.. 非常感谢 php 专家的任何调整 ... $teamnames = "Arsena
我正在尝试开始使用 Symfony2,并一直在尝试为我的应用程序的模型层设置自动化测试。 Symfony2 书讨论了 Controller 的单元测试,但我找不到很多模型测试的示例。 我希望在每次测试
我想为我的测试使用一个通用的夹具: @RunWith(JUnitPlatform::class) abstract class BaseSpek: Spek({ beforeGroup {pr
使用这个固定装置,我想根据 before 固定装置 Hook 中 API 调用的结果设置 checkoutId,这样我就可以用它来设置页面我的测试 let checkoutId; fixture`Ch
我尝试过各种尝试。这是我最新的。我只是想 stub Axios 请求并返回固定装置。 const { expect } = require('chai'); const sinon = require
我是一名优秀的程序员,十分优秀!