python - 如何使用来自 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 夹具的夹具,然后让我登录?不过,如何从文件中传递参数?
请指出我正确的方向!谢谢!
解决方案
推荐阅读
- amazon-web-services - 如何运行 AWS ECS 任务,然后在准备好后运行 Lambda 函数,然后最终停止任务?
- python - 无法在谷歌虚拟机中安装 python
- scala - 如何在不同的scala集合之间转换?
- javascript - `ended` 事件在 Firefox 87、88 和 89 中无休止地触发
- swift - 如何修复在范围内找不到“FirebaseApp”?
- firebase - Firebase 会自动退出会话吗?
- sql - 自加入返回错误值
- python - 如何过滤已回答/未回答的问题?
- mysql - 检查约束的表达式包含不允许的函数
- python - 检查 python 将数据写入 csv 文件所用的时间