在pytest钩子函数中判断Android和iOS设备(方法一)

在一个UI自动化工程里可以执行iOS UI 自动化和Android UI 自动化,那么在有些公共方法里就需要区分是Android手机还是iOS手机,例如,pytest的钩子函数。

在 pytest_runtest_makereport 这个钩子函数中我添加了,截图和重启app的指令,这就需要在执行指令之前知道是Android手机还是iOS手机,这样才能创建相应的driver,为了区分不同平台,可以这样判断:

python 复制代码
@pytest.hookimpl(tryfirst=True, hookwrapper=True)
def pytest_runtest_makereport(item, call):
    outcome = yield
    rep = outcome.get_result()

    if rep.when == 'call':
        if rep.failed:
            logger.error(f"Test {item.nodeid}: FAILED\n")

            driver = None

            if "ios" in item.keywords:
                logger.info("进入了iOS的判断case")
                driver = item.funcargs['ios_driver']
            elif "android" in item.keywords:
                logger.info("进入了Android的判断case")
                driver = item.funcargs['android_driver']
复制代码
(ios_driver和android_driver是两个创建驱动的fixture)

通过上面的代码还不能实现判断是Android还是iOS,需要在测试用例中显式添加标记,比如 @pytest.mark.android 和 @pytest.mark.ios,然后在钩子中通过 item.keywords 检测这些标记。

python 复制代码
# 在测试用例中使用标记
@pytest.mark.android
def test_android_login():
    pass

@pytest.mark.ios
def test_ios_login():
    pass

这样就可以动态判断是Android还是iOS了。

相关推荐
SoraLuna5 小时前
「Mac畅玩鸿蒙与硬件54」UI互动应用篇31 - 滑动解锁屏幕功能
macos·ui·harmonyos
工程师老罗7 小时前
我用AI学Android Jetpack Compose之理解声明式UI
android·ui·android jetpack
Swift社区7 小时前
基于 GitHub Actions 的流程自动化实践
运维·自动化·github
后端转全栈_小伵8 小时前
小程序发版后,强制更新为最新版本
前端·微信小程序·小程序·自动化·uniapp
金牛IT9 小时前
MySQL 3主集群搭建
linux·运维·自动化·监控
weixin_6158965611 小时前
每日一学——自动化工具(Jenkins)
运维·自动化·jenkins
HWL567912 小时前
常见的显示器分辨率及其对应的像素数量
ui·计算机外设·css3
军训猫猫头13 小时前
32.失焦提示 C#例子 WPF例子
ui·c#·wpf
伊织code15 小时前
Huginn - 构建代理、执行自动化任务
自动化·agent·代理·工作流·huginn
bug管理者16 小时前
2025软件测试自动化面试题(含答案)
软件测试·面试·职场和发展·自动化