Выбор имени файла зависит от параметра в командной строке при запуске pytest - PullRequest
0 голосов
/ 28 января 2020

У меня есть проект со структурой такой же: https://github.com/RomanBaggins/Test_automatisation_final_project. В conftest.py я получаю параметры из cmd. В одной из функций в mane_page.py мне нужно присвоить значение (= параметр в cmd) переменной. Например:

cmd: pytest -s -v --language = en --status = пусто test_main_page.py

import pytest
from selenium import webdriver
from selenium.webdriver.chrome.options import Options


def pytest_addoption(parser):
    parser.addoption('--language', action='store', default=None, help="Choose language")
    parser.addoption('--status', action='store', default=None, help="Choose status")



@pytest.fixture(scope="function")
def browser(request):
    user_language = request.config.getoption("language")
    if user_language:
        options = Options()
        options.add_experimental_option('prefs', {'intl.accept_languages': user_language})
        browser = webdriver.Chrome(options=options)
        browser.implicitly_wait(5)
        yield browser
    else:
        raise pytest.UsageError("--choose your language again")
    browser.quit()

@pytest.fixture
def choose_status(request):
    return request.config.getoption("status")

Затем на главной странице .py Я хочу сделать это:

from .base_page import BasePage
from selenium.webdriver.common.by import By
from .locators import MainPageLocators

class MainPage(BasePage): 
    def go_to_login_page(self):
        login_link = self.browser.find_element(By.CSS_SELECTOR, "#login_link")
        login_link.click()
        **chosen status = status** <-----------
        def should_be_login_link(self):
        assert self.is_element_present(*MainPageLocators.LOGIN_LINK)

Наконец мне нужен этот результат: selected_satus = "empty"

Как я могу это сделать?

Ответы [ 2 ]

0 голосов
/ 30 января 2020

Вот окончательный код, который решает мою проблему: conftest.py

@pytest.fixture
def choose_status(request):
    return request.config.getoption("status")


def test_main_page(choose_status):
    MainPage().go_to_login_page(choose_status)

В main_page.py

class MainPage(BasePage): 
    def go_to_login_page(self,choose_status):
        if choose_status == "clear":
            #do smth

В test_main_page:

def test_guest_can_go_to_login_page(browser,choose_status):
    link = "someurl"

    page = MainPage(browser, link)   
    page.open()                      
    page.go_to_login_page(choose_status)   
    page.should_be_login_link()
0 голосов
/ 28 января 2020

Вы можете отправить его в качестве параметра на go_to_login_page() из теста

@pytest.fixture
def choose_status(request):
    return request.config.getoption("status")

def test_main_page(choose_status):
    MainPage().go_to_login_page(choose_status)


class MainPage(BasePage): 
    def go_to_login_page(self, status):
        # status = empty
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...