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

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

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

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

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

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

def pytest_configure(config):
    call_the_app_launch_or_whatever_you_need_on_session_start()

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

Да хуки в py.test великая сила, привожу еще и ссылку на перечень этих хуков How to install and use plugins — pytest documentation