我正在使用pytest和Appium在iOS和Android设备上自动化测试。考虑以下:some_locator: { 'iOS': ('MobileBy.ACCESSIBILITY_ID', 'some_id'), 'Android': ('MobileBy.ID', 'another_id') }def foo(): bar = driver.find_element(some_locator) return bar.text我想在命令行中使用'ios'或'android'参数运行脚本,以使函数find_element使用相应的元组值。我也知道我可以这样做:# conftest.pydef pytest_addoption(parser): parser.addoption("--platform", default="ios")@pytest.fixturedef cmdopt(request): return request.config.getoption("--platform")# some_file.pysome_locator: { 'iOS': ('MobileBy.ACCESSIBILITY_ID', 'some_id'), 'Android': ('MobileBy.ID', 'another_id') }def foo(platform): if platform == 'ios': bar = find_element(*some_locator['ios']) elif platform == 'android': bar = find_element(*some_locator['android']) return bar.text但是坦率地说,我不喜欢这样,因为我必须if在每种方法中添加这些块。有什么方便的方法吗?我的python不好,所以我找不到解决方法,请提出建议。
2 回答
扬帆大鱼
TA贡献1799条经验 获得超9个赞
您不能只使用platform变量some_locator直接建立索引吗?IE
def foo(platform):
return find_element(*some_locator[platform]).text
有效地,some_locator字典执行与if-elif链相同的工作。
添加回答
举报
0/150
提交
取消