Мы пишем некоторые модульные тесты, чтобы утверждать, что в определенных точках внутри функций транзакция базы данных активна. Однако мы боремся, как точно утверждать это, кто-нибудь знает, как мы можем это сделать? Просмотр Django Transaction Docs и Source Code for django.db.transaction не принесли ничего полезного.Django Unit Test Assert Database 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()
Одно замечание: Мы действительно заинтересованы, чтобы сделать это в базе данных агностиком образом (мы используем SQLite в разработчика и PostgreSQL в другом месте), однако, если есть решения, которые работают только для postgresql, тогда это будет работоспособным.