[Code Recipe] pytest-xdist trick to load test data for each test case

pytest
python
Теги: #<Tag:0x00007fedc0e85188> #<Tag:0x00007fedc0e85048>

(Alexander Petrovich) #1

В поддержку инициативы Code Recipes

Ещё один трюк с пайтестом.

В некоторых тестах я, что называется, на ходу генерю себе тестовые данные. В этом деле помогает маленькое приложение, которое имеет доступ к базе и другим необходимым ресурсам. Ранее это самое приложение запускалось в своеобразной точке входа в тесты, следом за ним вызывался pytest.main('params').

Проблема в том, что при использовании xdist, в частности при параллельном запуске тестов (или даже в один поток, но с использованием плагина), трэды не видели этого самого приложения (напрямую оно никак не вызывается).

Решается всё очень просто. В conftest.py Добавляем хук

def pytest_configure(config):
    call_the_app_launch_or_whatever_you_need_on_session_start()

Выполняется последний после того, как распарсятся параметры командной строки и загрузятся плагины


(Mykhailo Poliarush) #2

Да хуки в py.test великая сила, привожу еще и ссылку на перечень этих хуков http://pytest.org/latest/plugins.html#well-specified-hooks