Как правильно запускать автотесты в несколько потоков?

Приложение допускает только одну авторизацию для пользователя в единицу времени. Таким образом, если под этим пользователем с другого браузера кто-то войдет, первого разлогинивает. У меня есть 10 автотестов, которые последовательно выполняются 10 минут. Я создал два тестовых пользователя, которых при помощи pytest -n2 хочу запустить в два потока. Но, я не понимаю как правильно передать в фикстуру авторизации креды для авторизации. У меня получается что при создании двух потоков авторизуется первый пользователь.

Пользователей можем хранить так:

credentials = {
     1: {'user': 'user_1', 'pass': 'pass_1'},
     2: {'user': 'user_2', 'pass': 'pass_2'}
}

Ответы (1 шт):

Автор решения: dimmaq

У pytest-xdist есть встроенная фикстура worker_id https://pytest-xdist.readthedocs.io/en/latest/how-to.html#identifying-the-worker-process-during-a-test

Делаете сессионную фикстуру, которая по worker_id возьмёт свой логин пароль.

Примерно так

credentials = {
     'gw0': {'user': 'user_1', 'pass': 'pass_1'},
     'gw1': {'user': 'user_2', 'pass': 'pass_2'}
}

@pytest.fixture(scope='session')
def user_account(worker_id):
    """use a different account in each xdist worker"""
    return credentials[worker_id]

→ Ссылка