#pytest #fastapi
Вопрос:
Я тестирую конечную точку, созданную с помощью fastApi. Все провалившиеся тесты исходят от конечной точки, которой необходимо запросить параметры, см. Пример ниже
Кстати: я использую TestClient из fastApi
Пример 1
def test_fetch_paged_ggci_is_success():
page = 2
page_limit = 15
page_endpoint = "ggci/list?page={}amp;limit={}".format(page, page_limit)
response = client.get(page_endpoint, headers=headers)
fetched_page = response.json()
assert response.status_code == 200
assert len(fetched_page) == page_limit
Пример 2
def test_increase_limits_of_the_paged_ggci_shall_not_influnce_fetch_order():
page = 1
page_limit = 10
page_endpoint = "ggci/list?page={}amp;limit={}".format(page, page_limit)
page_limit_increased = 15
page_endpoint_limit_increased = "ggci/list?page={}amp;limit={}".format(page, page_limit_increased)
response = client.get(page_endpoint, headers=headers)
response_limitresponse = client.get(page_endpoint, headers=headers)response = client.get(page_endpoint, headers=headers)_increased = client.get(page_endpoint_limit_increased, headers=headers)
assert response.status_code == 200
assert response_limit_increased.status_code == 200
fetched_page = response.json()
fetched_page_limit_increased = response_limit_increased.json()
assert len(fetched_page) == page_limit
assert len(fetched_page_limit_increased) == page_limit_increased
Если выполнить тест, подобный приведенному выше, по отдельности, он пройдет без проблем. Но при выполнении теста все вместе прошел только первый.
Я думаю, что они мешают друг другу. когда response = client.get(page_endpoint, headers=headers)
вызывается в каждой функции. Функция может подхватить другие функции page_endpoint
.Как я могу разделить каждый тест для запуска по отдельности?
Комментарии:
1. В вашем первом тесте нет никаких ссылок
page_endpoint
, но в нем делается попытка ссылаться на это имя. Вы уверены, что этот тест действительно верен?2. Исправлено, я изменил все имена функций и некоторые имена переменных, я не хочу, чтобы произошла утечка базы кода. Но вы правы, это ошибка из-за этого