Как правильно запускать автотесты в несколько потоков?
Приложение допускает только одну авторизацию для пользователя в единицу времени. Таким образом, если под этим пользователем с другого браузера кто-то войдет, первого разлогинивает. У меня есть 10 автотестов, которые последовательно выполняются 10 минут. Я создал два тестовых пользователя, которых при помощи pytest -n2 хочу запустить в два потока. Но, я не понимаю как правильно передать в фикстуру авторизации креды для авторизации. У меня получается что при создании двух потоков авторизуется первый пользователь.
Пользователей можем хранить так:
credentials = {
1: {'user': 'user_1', 'pass': 'pass_1'},
2: {'user': 'user_2', 'pass': 'pass_2'}
}
Ответы (1 шт):
У 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]