Nik*_*lub 5 python django unit-testing
我已将 django 从 1.6 更新到 1.8.3。我在单元测试中的 test setUp 方法中创建测试模型,类似这样
class MyTestCase(LiveServerTestCase):
reset_sequences = True
def setUp(self):
self.my_model = models.MyModel.objects.create(name='test)
Run Code Online (Sandbox Code Playgroud)
我在应用程序中有代码,它依赖于主键 == 1。我注意到,实际上并没有重置序列。在每次下一次测试中,pk 都比前一次更大。
这在 django 1.6 中工作正常,但在迁移到 1.8 后出现问题。
我应该手动重置序列吗?
Ps 我知道夹具,但我的模型更复杂,对我来说在代码中创建模型更容易。
问题出在 sqlite3 中。测试已使用其他设置文件运行,其中 sqlite3 配置为数据库。
django 检查数据库是否支持序列:
# django.test.testcases.py:809
def _reset_sequences(self, db_name):
conn = connections[db_name]
if conn.features.supports_sequence_reset:
sql_list = conn.ops.sequence_reset_by_name_sql(
no_style(), conn.introspection.sequence_list())
# ....
Run Code Online (Sandbox Code Playgroud)
所以我已将测试设置切换到 postgresql,现在它可以正常工作
| 归档时间: |
|
| 查看次数: |
432 次 |
| 最近记录: |