我正在使用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.py
def pytest_addoption(parser):
parser.addoption("--platform", default="ios")
@pytest.fixture
def cmdopt(request):
return request.config.getoption("--platform")
# some_file.py
some_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不好,所以我找不到解决方法,请提出建议。
答案 0 :(得分:1)
直接使用platform
变量
def foo(platform):
bar = find_element(*some_locator[platform])
return bar.text
答案 1 :(得分:1)
您是否可以仅使用platform
变量直接为some_locator
编制索引?即
def foo(platform):
return find_element(*some_locator[platform]).text
有效地,some_locator
词典执行与if-elif
链相同的工作。