В каждой тестовой функции я создаю некоторые данные в некоторых таблицах (пользовательская таблица). , таблица сообщений, таблица комментариев и т. д.) с использованием SQLAlchemy. Эти созданные данные в каждой тестовой функции останутся в таблицах после завершения тестовой функции и повлияют на другие тестовые функции.
Например, в первой тестовой функции я создаю 3 сообщения и 2 пользователей, то во вторых тестовых функциях эти 3 сообщения и 2 пользователя остались в таблицах, что делает мои ожидания от теста неверными.
Ниже приведена моя настройка для pytest:
Код: Выделить всё
@pytest.fixture
def session(engine):
Session = sessionmaker(bind=engine)
session = Session()
yield session
session.rollback() # Removes data created in each test method
session.close() # Close the session after each test
И Ниже приведены мои тестовые функции:
Код: Выделить всё
class TestAllPosts(PostBaseTestCase):
def create_logged_in_user(self, db):
user = self.create_user(db)
return user.generate_tokens()["access"]
def test_can_api_return_all_posts_without_query_parameters(self, client, session):
posts_count = 5
user_token = self.create_logged_in_user(session)
for i in range(posts_count):
self.create_post(session)
response = client.get(url, headers={"Authorization": f"Bearer {user_token}"})
assert response.status_code == 200
json_response = response.json()
assert len(json_response) == posts_count
def test_can_api_detect_there_is_no_post(self, client, session):
user_token = self.create_logged_in_user(session)
response = client.get(url, headers={"Authorization": f"Bearer {user_token}"})
assert response.status_code == 404
Как я могу удалить созданные данные в каждой тестовой функции после завершения тестовой функции?
Подробнее здесь: https://stackoverflow.com/questions/781 ... t-function