Shestavin
(Shestavin)
#1
Добрый день!
При запуске теста через pytest указываю в параметрах browser (по умолчанию chrome), например:
py.test --tx browser=ff test_1.py
тест запускается в firefox,
но при запуске тестов параллельно
py.test -n2 --tx browser=ff test_1.p
параметр browser не учитывается и тесты запускаются параллельно, но не в том браузере (в браузере по умолчанию).
Не подскажете, как правильно передавать в таком случае параметры?
polusok
(Mykhailo Poliarush)
#2
а где и как вы считываете опции, которые передаются на запуск тестов?
furiousduck
(Alexander Petrovich)
#3
Попробуйте
browser=ff py.test -n2 --tx test_1.py
furiousduck
(Alexander Petrovich)
#4
подозреваю
import os
os.environ.get('browser')
Shestavin
(Shestavin)
#5
for i in sys.argv:
if i.__contains__("browser="):
Shestavin
(Shestavin)
#6
Как и ожидалось, не знает команду browser.
furiousduck
(Alexander Petrovich)
#7
Вы под виндой запускаете?
furiousduck
(Alexander Petrovich)
#9
В командной строке для управления переменными есть команда SET
На работе винды под рукой нет, но вы можете попробовать:
cmd >> SET browser=ff & py.test -n2 --tx test_1.py
А в самом тесте, как я писал выше,
import os
os.environ.get('browser')
UPD: Пардон, забыл амперсанд сначала. Проверл дома, строка os.environ.get('browser') отдаёт ff
polusok
(Mykhailo Poliarush)
#10
если вы параметриризуете и используете pytest то нужно делать через hooks http://pytest.org/latest/example/simple.html?highlight=pytest_addoption
вот рабочий пример
- настройка приема опции
- сами тесты
- их запуск
- и результаты
1 |
py.test --capture=no --browser=ff -n 3 --junitxml=junit.xml .
|
1234567891011121314151617181920212223242526272829303132
|
c:\temp\xdist
>py.test --capture=no --browser=ff -n 3 --junitxml=junit.xml .
============================= test session starts =============================
platform win32 -- Python 2.7.3 -- pytest-2.3.4
plugins: xdist
gw0 [2] / gw1 [2] / gw2 [2]
scheduling tests via LoadScheduling
FF
================================== FAILURES ===================================
_________________________ test_something_in_parallel2 _________________________
[gw0] win32 -- Python 2.7.3 c:\Program Files (x86)\Python27\python.exe
browser = 'ff'
def test_something_in_parallel2(browser):
> raise Exception(browser)
E Exception: ff
test_something.py:6: Exception
_________________________ test_something_in_parallel1 _________________________
[gw1] win32 -- Python 2.7.3 c:\Program Files (x86)\Python27\python.exe
browser = 'ff'
def test_something_in_parallel1(browser):
> raise Exception(browser)
E Exception: ff
test_something.py:2: Exception
----------------- generated xml file: c:\temp\xdist\junit.xml -----------------
========================== 2 failed in 0.59 seconds ===========================
c:\temp\xdist
>
|
1234567891011
|
import pytest
def pytest_addoption(parser):
parser.addoption("--browser", action="store", default="firefox",
help="my option: firefox or explorer")
@pytest.fixture
def browser(request):
return request.config.getoption("--browser")
|
123456
|
def test_something_in_parallel1(browser):
raise Exception(browser)
def test_something_in_parallel2(browser):
raise Exception(browser)
|
все вместе можно посомтреть тут https://gist.github.com/polusok/6138334
2 лайка
Alenas
(___)
#11
Подскажите , пожалуйста, как, используя pytest, в середине выполнения теста передать тесту данные? Обычный ввод с клавиатуры input не работает.