Привет. Как понятно из темы нужно передать значение аргумента из командной строки в тесты.
Например py.test --baseurl=http://localhost:8080/api/v1
Нужно получить значение аргумента --baseurl в тестах.
Я создал в корне проекта файл conftest.py следующего содержания
def pytest_addoption(parser):
parser.addoption("--baseurl", action="store", default="http://localhost:8080/api/v1",
help="Type the base URL: http://someurl.com. Default is http://localhost:8080/api/v1")
@pytest.fixture()
def get_base_url(request):
obtained_base_url = request.config.getoption("--baseurl")
return obtained_base_url
У меня есть базовый тестовый класс от которого наследуются все остальные тестовые классы. Как мне получить этот самый --baseurl в них
За пайтоном второй день если что
В принципе нашел простое решение без использования фикстур даже.
в базовом классе просто метод
def base_url(self):
base_url = pytest.config.getoption("–baseurl")
return base_url
ex3me0
(SS)
#3
import pytest
import unittest
@pytest.fixture()
def get_base_url(request):
obtained_base_url = request.config.getoption("--baseurl")
request.cls.base_url = obtained_base_url
@pytest.mark.usefixtures("get_base_url")
class BaseClass(unittest.TestCase):
pass
class Child1(BaseClass):
def test_one(self):
assert self.base_url
print(self.base_url)
assert False
Запуск:
py.test test_one.py -v --baseurl=http://ololo.example.com
Вывод на консоль:
def test_one(self):
assert self.base_url
print(self.base_url)
> assert False
E AssertionError: assert False
test_one.py:14: AssertionError
---------------------------- Captured stdout call -----------------------------
http://ololo.example.com
Все работает =) Хоть и request.cls.base_url - довольно не очевидная хрень
ex3me0
(SS)
#4
Тогда уж с декоратором @property, если через метод базового класса, дабы было лакшери
Добрый день ,
Подскажите - создал новый проект - скопировал этот код - попробовал запустить - и выводит
py.test: error: unrecognized arguments: --baseurl=http://ololo.example.com
в чем моя ошибка?
@mrGorobec
conftest.py
зарегистрируй там аргумент
ex3me0
(SS)
#7
@mrGorobec В моем примере опущен pytest_addoption
Попробовал так же реализовать, не получается. В чем может быть ошибка?
Выводит: ValueError: no option named ‘-–baseurl’