Параллельное выполнение Pytest Xdist, предотвращение воссоздания базы данных - PullRequest
0 голосов
/ 22 ноября 2018

Я пытаюсь ускорить тесты Selenium в моем веб-приложении Python Django, используя параллельное выполнение 4 потоков (-n = 4)

Из первых 4 тестов 3 дают следующую ошибку:

[test setup] [Test Error Output]
Got an error creating the test database: (1007, "Can't create database 'test1database'; database exists")

Я понял, что мне нужно указать настройку, которая должна быть запущена один раз перед выполнением параллельного теста, чтобы предотвратить многочисленные попытки создания базы данных, но как мне применить это в конфигурации pytest xdist?

Ответы [ 2 ]

0 голосов
/ 22 ноября 2018

Вы можете использовать это, если вы не застряли ни в одной проблеме с остальным кодом:

CREATE DATABASE IF NOT EXISTS test1database;
0 голосов
/ 22 ноября 2018

Возможно, у вас есть разные базы данных для каждого из потоков.Прибор worker_id позволяет вам сделать это https://github.com/pytest-dev/pytest-xdist#identifying-the-worker-process-during-a-test

@pytest.fixture()
def test_database(worker_id):
    return CreateDatabase("test{}database".format(worker_id))

Обновление

Этот комментарий к выпуску github показывает решение проблемыОригинальная проблема ОП.Он также создает N баз данных, используя общий шаблон.Это вносит интересный поворот в синхронизацию доступа к общему ресурсу в приспособлении.

...