Могу ли я обусловить параллельное выполнение pytest-xdist тестовыми зависимостями?

Я обнаружил какую-то комбинацию pytest-xdist с плагинами, связанными с зависимостями, такими как pytest-dependency (но, похоже, есть некоторые несовместимости, лучше сказать, они не ладят) или pytest-ordering с теми же проблемами.

Мне нужно запускать параллельно, но вводить некоторые ограничения, чтобы гарантировать, что некоторые тесты, связанные с общими задачами (в основном, предоставление базы данных для конкретных тестов), выполняются изолированно перед остальными тестами группы "распараллеливания". Например, я хотел бы организовать свои тесты примерно так:

test_suite1 / test_provision.py
            / chapter1 / test_a.py
                         test_b.py
                         ...
            / chapter2 / test_provision.py <= don't pay attention on test names issues (this
                         test_a.py            can be named  test_suite1_chapter2_provision.py
                         test_b.py            or __init__.py can be used to avoid the problem
                         test_c.py            of unique names)
                         ...
              ...
test_suite2 / test_suite2_provision.py
              ...
...

Идея состоит в том, чтобы запустить распараллеливание с учетом ограничений, связанных с зависимостями, так, например, при вводе глобального списка собранных тестов для test_suite1, pytest-xdist должен остановиться на test_provision.pyзапускать его последовательно, затем запускать главы параллельно и так далее. Некоторые главы также могут иметь ограничения (например, chapter2 test_provision.py), и это также должно быть соблюдено: сначала условие, затем дочерние тесты chapter2... В примереchapter2 / test_provision.pyнаходится в том же каталоге, что и тесты, это не вопрос организации иерархии файловой системы (хотя это, вероятно, соглашение по проекту и, вероятно, должно быть единообразным: например, тесты обеспечения изолированы в родительских каталогах или что-то в этом роде). Таким образом, я ожидаю вставлять метки pytest или аналогичные для создания зависимостей в определениях тестов, а не в файловой системе.

Если эту идею сложно реализовать, возможно, упрощением можно было бы отметить тест, который будет выполняться однозначно при достижении (остановка параллельного выполнения pytest-xdist для всей группы собранных тестов), тогда, хотя другие действительно могут быть распараллелены с ним, мы может пожертвовать этим ради большего блага, то есть избежать коллизий в плане тестирования (и, таким образом, избежать неудачных выполнений). Но это означало бы большее общее время выполнения, и я бы предпочел избежать этого решения.

Кроме того, я не хочу запускать каждый тест обеспечения в начале (например, pytest -m 'provisions' ; pytest -m 'others') потому что некоторые положения являются специализациями верхних и несовместимы с другими братьями по положениям веток. Итак, с точки зрения pytest-xdist, каждый тест при достижении должен действовать так, как он был разработан.

РЕДАКТИРОВАТЬ: мою озабоченность можно понять как требование установить какое-то тестовое сродство к конкретному рабочему pytest-xdist. Это связано с тем, что если я гарантирую, что некоторые каталоги управляются одним рабочим, я смогу контролировать всю картину.

0 ответов

Другие вопросы по тегам