Py学习  »  Django

如何使django单元测试检查m2m db约束?

Troy • 6 年前 • 2012 次点击  

假设我有这个模型定义:

class Foo(Model):
   ...

class Bar(Model):
   some_m2m_field = ManyToManyField(Foo)

这个代码:

bar = Bar.objects.create()
bar.some_m2m_field.set(an_id_array_with_some_invalid_pks)

当我正常运行时,最后一行应该抛出一个 IntegrityError . 但是,如果我从 django.test.TestCase ,最后一行不会抛出错误。而是等到 _post_teardown() 抛出 积分误差 .

下面是一个小项目来说明这个问题: https://github.com/t-evans/m2mtest

我该怎么解决?我想这是可以配置的,但我还没找到…

后续问题:

最后,当有坏的ID传递给 m2m_field.set() 方法(我需要单元测试来验证错误的id是否被正确处理,这就是为什么延迟 积分误差 在单元测试中不起作用)。

我知道我可以通过在数组上循环并为每个id点击一个db来找到坏id。 set() 方法忽略/删除错误的ID?

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/39728
文章 [ 2 ]  |  最新文章 6 年前