【发布时间】:2015-01-15 08:41:21
【问题描述】:
我们正在编写一些单元测试来断言在函数内部的某些点有一个数据库事务处于活动状态。但是,我们正在努力如何准确地断言这一点,有谁知道我们该怎么做?浏览Django Transaction Docs 和Source Code for django.db.transaction 没有发现任何有用的信息。
这里有一些代码来说明我们正在努力实现的目标,使用Assertion Injection:
def function_under_test():
... some stuff ....
function_we_will_patch_to_assert_transaction_is_open()
... some more stuff ...
class MyTestCase(TestCase):
def assert_transaction_is_active(self):
self.assertTrue(...what goes in here to assert this?...)
@patch('function_we_will_patch_to_assert_transaction_is_open'):
def test_function_under_test__transaction_is_active(self, patched_fn):
patched_fn.side_effect = self.assert_transaction_is_active
function_under_test()
请注意:我们非常热衷于以与数据库无关的方式执行此操作(我们在 dev 中使用 sqlite,在其他地方使用 postgresql),但是如果有仅适用于 postgresql 的解决方案,那将是可行的。
【问题讨论】:
标签: python django postgresql unit-testing transactions