Рубрики
Без рубрики

Пропуск тестов

Иногда вы можете пропустить конкретный тест во время выполнения других для … Tagged с Python, тестирование, новички.

Иногда вы можете пропустить конкретный тест при выполнении других по какой -то причине. Возможно, парень из базы данных не закончил настройку, и этот конкретный тест требует подключения к базе данных. Вместо того, чтобы ждать, вы можете просто написать тест и указать 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”