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

How to make python function use values from dictionary based on environment variables?

我正在使用 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不好所以想不出解决办法,求指教

直接使用platform变量

def foo(platform):
    bar = find_element(*some_locator[platform])
    return bar.text

不能直接用platform变量索引some_locator吗?即

def foo(platform):
    return find_element(*some_locator[platform]).text

实际上,some_locator 字典与 if-elif 链执行相同的工作。