среда, 20 мая 2020 г.

Как создавать маркеры и использовать их чтобы запускать только определенные тесты



В  Pytest есть возможность ставить маркеры на отдельные тесты (они могут быть в одном файле или в разных). 

Это позволит:

  • запускать тесты только с определенным маркером.
  • пропускать тесты с определенным маркером.


ПРИМЕР 1


Нам надо создать список тестов, которые будут запускаться ежедневно - Smoke tests.
import pytest
@pytest.mark.smoke
def test_user_should_see_icon_on_homepages(driver):
    homepage.open(driver)
    assert homepage.is_icon_displayed(driver), "The icon is not displayed on Homepage"

Вначале мы импортируем pytest
import pytest
Добавляем маркер с именем smoke перед каждым тестом, который нужно запускать каждый день.
@pytest.mark.smoke
Чтобы запустить только тесты с маркером smoke, в Терминале вводим:
pytest -v -m smoke
Если нужно, чтобы запустились все тесты, кроме Smoke
pytest -v -m "not smoke"
Можно выбрать только тесты, которые в своем названии содержат определенное слово (например "color") - запустятся только эти тесты.
pytest -v -k color
Чтобы запусить все тесты, которые в названии не содержат ключевое слово "color", вводим такой текст:
pytest -k "not color" -v
Можно запустить тесты по двум ключевым словам. Например, запускаем тесты, названия которых содержат слова "color" и "hover" (запустятся все 
тесты, которые содержат хотя бы одно из ключевых слов).
pytest -k "color or hover" -v

ПРИМЕР 2

Нужно исключить прогонку тестов для Windows, то есть тех тестов, которые нужно проверять только на Винде.
@pytest.mark.skipif(pytest.mark._config.getoption('os') == 'mac', reason='This test is for Windows only')
Добавляя такую строку перед тестом, мы добавляем маркер skipif (пропускать если).
Тест будет пропускаться, если выбранная для тестирования операционная система Mac
(('os') == 'mac')
Также можно установить маркер для сразу для нескольких функций, присвоих их определенному классу. В этом случае маркер ставится на класс.
import pytest


@pytest.mark.webtest
class TestClass:
    def test_startup(self):
        pass

    def test_startup_and_more(self):
        pass

ПРИМЕР 3



Если нужно полностью пропустить данный тест (заскипать)
@pytest.mark.skip(reason='Temporary skipped because of ticket FF-382')

Комментариев нет:

Отправить комментарий

Самые полезные ФУНКЦИИ Пайтона

 1)  PRINT - выводит на печать переменную, указанную в скобках print (average)   2)  LEN - посчитать количество элементов в списке student...