Доброго времени суток, друзья.
Регрессия мобильных приложений уже больше, чем могут позволить себе руки, поэтому встал вопрос о тестировании билда при помощи Appium. В виду того, что примерно 120 девайсов дают примерно 90% покрытия основного рынка Android (информация могла уже устареть), такой парк живых девайсов нужно тестировать по-возможности в параллели.
Есть ли у вас опыт параллельного запуска тестов pytest xdist и appium? Как в этом случае будет выглядеть setup фикстура? В моем понимании я должен передать в фикстуру генератор, где каждый запуск теста на каждый тред - будет получать свое имя девайса (из adb devices списка).
В интернете и на форуме не нашел актуального работающего решения для pytest и xdist
def pytest_addoption(parser):
parser.addoption("--mockgps", action="store", default="moscow_center",
help="Provide the lon, lat '37.6134591,55.7535942' ")
parser.addoption("--device", action="store", default="emulator-5554",
help="Provide the device name listed in >adb devices for test")
Представим, что мы из командной строки получили строку, которая представляет список всех девайсов (реальных, эмуляторов, не важно). Эта строка парсится на список девайсов и из нее делается итератор:
@pytest.fixture(scope='function')
def setup_func(request):
devices = pytest.config.getoption("--device").split(";")
devices = iter(devices)
device = next(devices)
И основные вопросы такие:
а) какой в этом случае скоуп фикстуры использовать?
б) у фикстуры должен быть shared resource - тот самый итератор, который должен yield’ить для правильного запуска тестов значение полученные извне и запускать тест на нужном девайсе. Получается, сам итератор должен быть объявлен и инстанциирован данными из командной строки раньше (извне фикстуры), чем запускается?
в) нужно запустить несколько интсансов аппиума на разных портах, это лучше тоже вынести в метод, а уже его вызывать в фикстуре?