Как сделать паузу py.тест тест и сделать некоторые другие тесты во время ожидания?

У меня есть много «длинных тестов», где я должен ждать некоторого относительно большого тайм-аута (минут).
Например, я вызываю какой-то API в тесте, жду 15 минут, и после этого проверяю веб-страницу на наличие изменений.

Поэтому вопрос в том, как приостановить некоторые тесты, но делать другие тесты во время ожидания.
I cannot use just sleep () — полный тестовый костюм в этом случае будет длиться часами (15 минут * (Количество таких тестов)).

Единственное решение, которое я вижу-организовать тесты (с крючком pytest_collection_modifyitems):

  1. Выполните первые части (до 15-минутной паузы) всех длинных тестов (вызов API в Примере длинного теста выше)
  2. Выполнить все короткие тесты
  3. (Необязательно) подождите немного, если (2) заняло менее 15 минут
  4. Выполните вторые части (после паузы) всех длинных тестов (проверьте веб-страницу в примере выше)

Но это был бы просто большой беспорядок, очень трудно управлять.

И это производит много фиктивных тестов, которые выполняются в (1) — на самом деле это что-то вроде тестовых установок, мне не нужны результаты от них, но pytest будет рассматривать их как отдельные тесты все равно.

UPD xdist не очень помогает — даже если я могу контролировать, как он распараллеливает тесты (в каких группах, которые работают одновременно), мне придется запускать все длинные тесты параллельно, потому что я хочу сделать что-то полезное во время ожидания, а не просто ждать (15 минут * (количество длинных тестов)) / (количество процессов xdist).

Кажется, единственный способ-залатать основную петлю pytest для этого. Таким образом, он будет выполнять тесты asyncronously. Но я даже не знаю, с чего начать..

1 ответ

  1. Существует pytest-xdistплагин для pytest, который позволяет параллелизацию тестового запуска. То есть тесты будут выполняться одновременно несколькими процессами (на нескольких процессорах) одновременно. Это не совсем то, что вы просите,-это не приостанавливает длительные тесты,-но это позволяет другим тестам работать в то же время, что и длительные тесты.

    Если вы можете отредактировать свой вопрос, чтобы описать, что вы подразумеваете под «первыми частями» и «вторыми частями» тестов, я мог бы дать лучший ответ.