如何使python函数使用基于环境变量的字典中的值?

我正在使用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不好,所以我找不到解决方法,请提出建议。


炎炎设计
浏览 126回答 2
2回答

扬帆大鱼

您不能只使用platform变量some_locator直接建立索引吗?IEdef foo(platform):    return find_element(*some_locator[platform]).text有效地,some_locator字典执行与if-elif链相同的工作。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python