在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了。

相关推荐
DFT计算杂谈3 小时前
自动化脚本一键绘制三元化合物相图
java·运维·服务器·开发语言·前端·python·自动化
ZC跨境爬虫4 小时前
跟着 MDN 学 HTML day_17:媒体与 Web Audio API 自动播放指南——策略、检测与最佳实践
前端·笔记·ui·html·音视频·媒体
冬奇Lab5 小时前
一天一个开源项目(第66篇):awesome-design.md - 让 AI 助你打造像素级 UI 的设计规范
人工智能·ui·设计规范
小姑爷5 小时前
微信4.1.5.16 UI树“消失”?UIAutomation实战复现+AI驱动RPA落地方案
人工智能·ui·微信
weixin_553654487 小时前
2026 年,如何构建一套具备自愈能力的 AI Agent 自动化工作流?
大数据·人工智能·自动化
Python伍六七7 小时前
给予Python开发的【16款高效办公自动化工具合集】,告别低效加班!
开发语言·python·自动化
eastyuxiao8 小时前
企业 OpenClaw 文档自动化落地项目 - 思维导图范围拆解
运维·自动化
Java面试题总结8 小时前
证书 47 天就过期,还在手动续?聊聊我在 AWS 上的自动化方案
自动化·云计算·aws
zhangfeng11338 小时前
CI/CD 是软件开发中的两个核心实践,合起来指代一套自动化的软件交付流程
运维·ci/cd·自动化