python - 在 PostgreSQL 上运行 Django 单元测试
问题描述
我正在尝试切换 Django unittest 套件以使用 PostgreSQL 作为其后端。更改 Django 测试设置最终变得微不足道,但现在当测试加载夹具时,我遇到了很多细微的错误。经过几个小时的修补,我发现问题是因为 Django 没有重置表上的 id 计数器,所以即使在测试之间从每个表中删除所有行,所有新的夹具都不使用夹具中的 ID,而是我们Id 是 1 加上上次测试中使用的最大 Id。
非常令人沮丧。所以我仔细研究了代码,看看为什么会发生这种情况,如果它是我使用 Django 2.2 中的一个错误,我发现它django.test.TransactionTestCase
甚至有一个漂亮的小_reset_sequences()
方法来重置测试之间的所有表序列。
但是,我使用的是标准django.test.TestCase
,并且由于某种原因,在该_fixture_setup()
方法中,它明确禁用_reset_sequences()
并断言错误:
AssertionError: reset_sequences cannot be used on TestCase instances
如果您尝试调用它。为什么是这样?
照原样,Django 未能重置表计数器,并且正在破坏我的单元测试。为什么不能在标准 TestCase 中重置表序列?
解决方案
推荐阅读
- javascript - 检查数组中的对象是否存在于另一个数组中,然后在Javascript中更改另一个数组的值
- boolean - 流条件执行 TRUE,而不是 FALSE
- python - 诅咒应用程序抛出_curses.error:init_pair()返回ERR
- redux-toolkit - 为所有操作增加时间的中间件
- python - Scrapy“download_latency”单元?
- mysql - Talend 流程:在 TrestClient 中一次传递一个日期
- docker - 对 docker 标签的概念感到困惑
- c++ - 在 debian 8 中运行 make -j2 错误时,我的 build.log 文件中有一个非常奇怪的错误
- javascript - 我的代码是第二个。我需要尽可能短
- python - Waitress 和 GUnicorn 大数据输入比 Flask 开发服务器慢很多