Поддерживает ли pytest маркеры «по умолчанию»?

Я использую pytest для тестирования моделей Python для встраиваемых систем. Тестируемые функции зависят от платформы. (Я использую «платформу» в этом контексте для обозначения типа встроенной системы, а не типа ОС).

Самый простой способ организовать мои тесты — распределить их по каталогам в зависимости от типа платформы.

/platform1
/platform2
/etc.

pytest /platform1

Это быстро стало трудно поддерживать, так как многие функции перекрываются на разных платформах.С тех пор я переместил свои тесты в один каталог, при этом тесты для каждой функциональной области были назначены одному имени файла (например, test_functionalityA.py). Затем я использую маркеры pytest, чтобы указать, какие тесты в файле применимы к данной платформе.

@pytest.mark.all_platforms
def test_some_functionalityA1():
    ...

@pytest.mark.platform1
@pytest.mark.platform2
def test_some_functionlityA2():
    ...

Хотя мне бы хотелосьзаставить 'conftest' автоматически определять тип платформы и запускать только соответствующие тесты, я смирился с тем, что определяю, какие тесты запускать в командной строке.

pytest -m "(platform1 или all_platforms)"

Вопрос: (наконец-то!)

Есть ли способ упростить ситуацию и заставить pytest запускать все непомеченные тесты по умолчанию и, кроме того, все тесты, пройденные через '- m' в командной строке?

Например: pytest -m "platform1"

будет запускать тесты с пометкой @pytest.mark.platform1, а также все тесты с пометкой @pytest.mark.all_platforms или даже все тесты без @pytest.mark вообще?

Учитывая большое количество общих функций, возможность удалить строку @pytest.mark.all_platforms была бы большим подспорьем.

7
задан JS. 6 June 2012 в 00:29
поделиться