Функция не дает одинаковых результатов даже при откате транзакций - PullRequest
0 голосов
/ 18 мая 2018

Я тестирую новую функцию, которая работает на определенных моделях, которые должны находиться в определенном состоянии, являющемся продуктом дорогостоящей операции, поэтому запускать ее каждый раз, когда я хочу протестировать эту функцию, - пустая трата времени, поэтому я решил, чтоОткат транзакций будет делать.

try:
    with transaction.atomic():
        m = MyModel.objects.get(id=some_id)
        for e in m.element_set.filter(some_filter):
            new_feature(m, e)
        log_state(m)
        raise DatabaseError
except DatabaseError:
    log_state(m)  # this looks like the state was restored

Этот блок используется прямо в методе представления без других переменных контекста, которые могут возиться с результатами.

Первый развсе работает как положено.Я ожидал бы точно такого же поведения в следующих запусках, так как мы откатываем изменения.Однако результат совершенно другой.

Что может быть причиной этого?Если мы возвращаем изменения базы данных в то же состояние, в котором она находилась до первого запуска функции, как мы получаем другой результат?

...