тест pytest: несколько тестов были провалены при совместном выполнении, но успешны при выполнении одного за другим

#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. Исправлено, я изменил все имена функций и некоторые имена переменных, я не хочу, чтобы произошла утечка базы кода. Но вы правы, это ошибка из-за этого