Иногда вы можете пропустить конкретный тест при выполнении других по какой -то причине. Возможно, парень из базы данных не закончил настройку, и этот конкретный тест требует подключения к базе данных. Вместо того, чтобы ждать, вы можете просто написать тест и указать Pytest пропустить его, придавая соответствующую причину, чтобы вы не выглядели так, как будто вы просто пропустили неудачный тест, чтобы сохранить тестовый набор зеленой.
Есть несколько способов сделать это. Самое простое – использовать @pytest.mark.skip
декоратор вот так:
import pytest def test_stuff(): # this test will be executed pass @pytest.mark.skip(reason="just testing if skip works") def test_other_stuff(): # this one will be skipped pass
Запуск ваших тестов должен получить вывод ниже:
collected 2 items skip.py .s [100%] ===================== 1 passed, 1 skipped in 0.05 seconds ===============
Обратите внимание на маленькую S
Анкет Это показывает тест, который был пропущен. Pytest также говорит нам, что 1 прошел, 1 пропущен
Анкет Если вам нужен более многословный выход, вы можете использовать -rs
флаг pytest skip.py -rs
:
collected 2 items skip.py .s [100%] ==================== short test summary info =============== SKIP [1] skip.py:14: just testing if skip works =================== 1 passed, 1 skipped in 0.02 seconds ==========
Тест выше был пропущен еще до того, как он начал. Это не всегда идеально. Вы можете иметь больше контроля над тем, как тест пропускается, используя pytest.skip (разум)
Функция:
import pytest def setup_stuff(): return False def test_stuff(): # this test will be executed pass def test_other_stuff(): # this one will be skipped if setup_stuff() returns false if not setup_stuff(): pytest.skip("setup failed") else: pass
collected 2 items skip.py .s [100%] =================== short test summary info ============================= SKIP [1] skip.py:12: setup failed ==================== 1 passed, 1 skipped in 0.05 seconds =================
Если вы предпочитаете проверить, что условие выполняется до начала теста, вы можете использовать Skipif
:
import pytest def setup_stuff(): return False def test_stuff(): # this test will be executed pass @pytest.mark.skipif(not setup_stuff(), reason="setup failed") def test_other_stuff(): # this one will be skipped if setup_stuff() returns false pass
collected 2 items skip.py .s [100%] =================== short test summary info ============================= SKIP [1] skip.py:12: setup failed ==================== 1 passed, 1 skipped in 0.05 seconds =================
Есть много других способов настроить свои тесты, чтобы пропустить в зависимости от определенных условий, как объяснено в Документы Анкет
Оригинал: “https://dev.to/wangonya/skipping-tests-2p6o”