【发布时间】:2014-08-26 15:11:00
【问题描述】:
我正在尝试运行以下 Django 单元测试:
class MyModelTests(TestCase):
def test_failed_duplicate(self):
m = MyModel.objects.create(a='a', b='a')
with self.assertRaises(IntegrityError):
MyModel.objects.create(a='a', b='b')
with self.assertRaises(IntegrityError):
MyModel.objects.create(a='a', b='c')
with self.assertRaises(IntegrityError):
MyModel.objects.create(a='a', b='d')
由于违反了字段 a 的唯一性约束,有几个测试都应该失败。 (我稍微混淆了断言,但它们都测试了应该失败的 a 的不同值。)
但是,运行时我得到:
Traceback (most recent call last):
File "...", line 21, in test_failed_duplicate
MyModel.objects.create(a='a', b='c')
TransactionManagementError: An error occurred in the current transaction. You can't execute queries until the end of the 'atomic' block.
我错过了什么?
【问题讨论】:
标签: django unit-testing testing django-models