Сеанс базы данных SQLAlchemy не сбрасывается после каждого тестаPython

Программы на Python
Ответить
Anonymous
 Сеанс базы данных SQLAlchemy не сбрасывается после каждого теста

Сообщение Anonymous »

У меня есть базовый класс TestRunner, который в основном соответствует их примеру:
import unittest

from sqlalchemy import create_engine
from sqlalchemy.event import listens_for
from sqlalchemy.orm import scoped_session
from sqlalchemy.orm import sessionmaker

from compliance.takedowns.data.models import Base

engine = create_engine('sqlite:///:memory:')
SessionFactory = scoped_session(sessionmaker(bind=engine))
Base.metadata.create_all(engine) # Initial schema setup

class TakedownsDBInternalTestRunner(unittest.TestCase):
@classmethod
def setUpClass(cls):
cls.engine = engine

def setUp(self):
self.connection = self.engine.connect()
self.trans = self.connection.begin()
self.session = SessionFactory

self.nested = self.connection.begin_nested()

@listens_for(self.session, "after_transaction_end")
def end_savepoint(session, transaction):
assert self.nested is not None
if not self.nested.is_active:
self.nested = self.connection.begin_nested()

def tearDown(self):
self.session.close()
self.trans.rollback()
self.connection.close()


Но я заметил, что между тестами возникают ошибки ссылочной целостности?
class RequestTests(TakedownsDBInternalTestRunner):
def test_one(self):
request = create_base_request()
self.session.add(request)
self.session.commit()

result = self.session.query(Request).all()
self.assertEqual(len(result), 1)

def test_two(self):
request = create_base_request()
self.session.add(request)
self.session.commit()

result = self.session.query(Request).all()
self.assertEqual(len(result), 2)


Вот какую ошибку я получаю:
========================================================================================================= short test summary info =========================================================================================================
FAILED test_request.py::RequestTests::test_two - AssertionError: 1 != 2
FAILED test_request.py::RequestTests::test_one - AssertionError: 2 != 1


Подробнее здесь: https://stackoverflow.com/questions/791 ... -each-test
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»