Цикл по ролям внутри одного теста против параметризации: что меняется в результате
В наборе есть тест:
def test_login_roles():
for role in ["admin", "manager", "guest"]:
assert login(role).status_code == 200
Коллега предлагает переписать его через @pytest.mark.parametrize.
Что это даст?
- Разницы нет: pytest в любом случае посчитает это одним тестом с тремя проверками внутри
- Тесты пойдут быстрее за счёт параллельного выполнения параметров внутри одного теста
- Каждая роль станет отдельным тестом: падение на admin не скроет результат manager и guest, а в отчёте будет видно, что именно упало
- Можно будет не писать assert: pytest сам сравнит результаты вызовов между параметрами
