首页 > 解决方案 > 如何使用来自 JSON 和命令行的数据对登录设置装置进行参数化

问题描述

我正在 pytest 中为我的 Web 应用程序设置一些基本的 UI 测试。此应用程序中的每个功能测试都需要用户先登录。我想创建一个设置夹具,它将打开一个浏览器(什么浏览器,什么服务器 - 取决于命令行参数),然后使用来自 JSON 文件的数据(无硬编码值)登录。我不想将我的测试用例基于登录测试用例(它有多组数据),我想使用单独的夹具。

我成功地创建了一个设置,可以打开所需的浏览器并使用所需的服务器,但我不知道如何参数化夹具,也可以使用来自 JSON 的数据。

所以,如果我想在我的设置装置中使用一个功能来让我登录,并且需要像登录名和密码这样的参数:

login_page = LoginPage(driver)
login_page.log_me_in(login, password)

我应该如何将它添加到我的设置夹具中?

这是我的 conftest.py 设置:

@pytest.fixture(scope="class")
def setup(request, browser, server_instance):
    if browser is None:
        browser = "iexplorer"

    if server_instance is None:
        server_instance = "test"

    driver = WebdriverFactory(browser, server_instance).webdriver_instance()

    if request.cls is not None:
        request.cls.driver = driver

    yield driver
    driver.quit()

以及从命令行添加参数:

def pytest_addoption(parser):
    parser.addoption("--browser", help="choose test browser: iexplorer, 
    firefox, chrome")
    parser.addoption("--server_instance", help="choose test server instance: 
    test, user")


@pytest.fixture(scope="class")
def browser(request):
   return request.config.getoption("--browser")


@pytest.fixture(scope="class")
def server_instance(request):
    return request.config.getoption("--server_instance")

我尝试使用 pytest_generate_tests,但我不完全理解稍后将参数添加到夹具的方式和基础。

或者也许我应该添加另一个使用 setup 夹具的夹具,然后让我登录?不过,如何从文件中传递参数?

请指出我正确的方向!谢谢!

标签: pythonpython-3.xparameter-passingpytestfixtures

解决方案


推荐阅读