Conversation
tests/conftest.py
Outdated
| if response.status_code != 200: | ||
| pytest.fail("Ошибка авторизации тестового курьера") | ||
|
|
||
| response = ScooterClient.courier_delete(response.json()["id"]) |
There was a problem hiding this comment.
почему курьер удаляется в предусловии, вероятно нужно после теста это делать?
также имеет смысл выделить фикстуру удаления отдельно, она будет нужна для тестов на создание курьера
tests/test_courier/test_create.py
Outdated
| assert response.status_code == 201 | ||
| assert response.json() == {"ok": True} | ||
|
|
||
| with allure.step("Отправить POST запрос на авторизацию созданного курьера"): |
There was a problem hiding this comment.
нужно исправить: этот код уже был, стоит реализовать фикстурой, т.к мы хотим в любом случае попытаться очистить бд, даже если не создан курьер
tests/conftest.py
Outdated
|
|
||
| response = ScooterClient.courier_login(login, password) | ||
| if response.status_code != 200: | ||
| pytest.fail("Ошибка авторизации тестового курьера") |
There was a problem hiding this comment.
это постусловие, отмечать тест упавшим из-за постусловия - это немного слишком
tests/test_courier/test_login.py
Outdated
| "empty" | ||
| ], | ||
| ) | ||
| def test_missing(self, courier, use_login, use_password, step): |
There was a problem hiding this comment.
нужно исправить: название теста непонятное
tests/test_courier/test_login.py
Outdated
|
|
||
| class TestCourierLogin: | ||
| @allure.title("Проверка авторизации курьера") | ||
| def test(self, courier): |
There was a problem hiding this comment.
нужно исправить везде: проследи что из названия теста ясно что проверяем и на какой результат
tests/test_courier/test_login.py
Outdated
| login, password = courier | ||
|
|
||
| with allure.step(f"Отправить POST запрос на авторизацию курьера без указания: {step}"): | ||
| response = ScooterClient.courier_login(login if use_login else None, password if use_password else None) |
There was a problem hiding this comment.
Нужно исправить: условий в тестах быть не может, тест всегда однозначен. Если это не вписывается в параметризацию, значит ее быть не должно и это просто несколько отдельных тестовых методов
tests/test_courier/test_login.py
Outdated
| response = ScooterClient.courier_login(login if use_login else None, password if use_password else None) | ||
|
|
||
| if response.status_code == 504: | ||
| pytest.skip("Некорректная работа API") |
There was a problem hiding this comment.
ошибки должны обрабатываться в assert, если код неверный то это фейл
| ] | ||
| ) | ||
| def test_with_missing_fields(self, login, password, firstName, step): | ||
| with allure.step(f"Отправить POST запрос на создание курьера без указания: {step}"): |
There was a problem hiding this comment.
отлично: понятные описания шагов для отчета
client.py
Outdated
| @staticmethod | ||
| def courier_create(login, password, firstName): | ||
| payload = {} | ||
| if login: |
There was a problem hiding this comment.
Нужно исправить: условий в тестах быть не должно, мы хотим точно знать какие были шаги
There was a problem hiding this comment.
Этот класс не является частью теста. Это просто класс-клиент в котором описаны запросы в api, чтобы их не приходилось копировать в каждом тесте
There was a problem hiding this comment.
этот класс вместе со всем ветвлением вызывается в тесте. от того что мы перенесли ветвление и спрятали его внутрь вызываемого метода оно не исчезло
client.py
Outdated
| @staticmethod | ||
| def courier_login(login, password): | ||
| payload = {} | ||
| if login: |
client.py
Outdated
| @staticmethod | ||
| def order_list(courierId, nearestStation, limit, page): | ||
| params = {} | ||
| if courierId: |
tests/test_courier/test_create.py
Outdated
|
|
||
| assert response.status_code == 201 | ||
| assert response.json() == {"ok": True} | ||
| courier_delete(login, password) |
There was a problem hiding this comment.
Нужно исправить: фикстура выполнится сама если в ней есть yield
There was a problem hiding this comment.
Здесь не используется фикстура в которой есть yield, так как здесь мы внутри теста создаем нового курьера и вызываем отдельно фикстуру для удаления курьера (очищение данных)
There was a problem hiding this comment.
мы можем передавать данные курьера которого создали в тесте обратно в фикстуру
tests/test_courier/test_create.py
Outdated
| ) | ||
| def test_with_missing_fields(self, login, password, firstName, step): | ||
| with allure.step(f"Отправить POST запрос на создание курьера без указания: {step}"): | ||
| response = ScooterClient.courier_create(login, password, firstName) |
There was a problem hiding this comment.
не исправлено - ветвление кода осталось
There was a problem hiding this comment.
Здесь нет ветвления кода, просто 6 наборов входных параметров
There was a problem hiding this comment.
в методе courier_create есть ветвление и оно вызывается внутри теста. пейлоад формируется внутри теста, а не передается входными параметрами.
Мы действительно можем в этом тесте передать 6 пейлоадов для теста и это будет работать. но сейчас реализовано так что внутри теста есть условия и нелинейное поведение
No description provided.