Есть ли возможность реализовать то, что мне нужно в один запуск py.test?
Тестируемый проект представляет собой кастомизируемый портал (меняются название фирмы, логотипы) и нужно один и тот же набор тестов запустить последовательно на разных урлах.
{
“host_urls”: [“url1”, “url2”]
}
Простым решением мне кажется отдельный скрипт, который будет парсить файл опций вперед конфтеста и следом будет запускать py.test в зависимости от того, сколько и каких урлов нашел, но мне такой подход кажется неправильным и есть ощущение, что это можно решить манипуляциями в conftest.py
В нижеследующий код вставил в робкой надежде, что проканает, но не проканало.
if is_multiportal_run == 'yes':_
for portal in options['host_urls']:
def app(request):
global fixture
global options
if options is None:
config_file = os.path.join(os.path.dirname(os.path.abspath(__file__)), request.config.getoption("--options"))
with open(config_file) as f:
options = json.load(f)
is_multiportal_run = request.config.getoption("--multiportal")
if is_multiportal_run == 'yes':_
_ for portal in options['host_urls']:_
if fixture is None or not fixture.is_valid():
fixture = Application(host_url=portal)
return fixture
def pytest_addoption(parser):
parser.addoption("--options", action="store", default="options.json")
# run py.test with option '--multiportal yes' to run test over all portal hosts set in options.json
# otherwise only first portal in list will be tested
parser.addoption("--multiportal", action="store", default="no")