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

相关推荐
laowangpython16 天前
Photoshop 2025 下载安装全攻略
其他·ui·photoshop
shushangyun_16 天前
2026年快消品B2B系统推荐:支持终端门店订货、促销政策自动化的工具?
java·运维·网络·数据库·人工智能·spring·自动化
施努卡机器视觉16 天前
SNK施努卡侧滑门锁上滑轮总成自动化装配线,从零件到组件,全流程精密制造方案
运维·自动化·制造
dayuOK630716 天前
写作卡壳怎么办?我的“5分钟启动法”
人工智能·职场和发展·自动化·新媒体运营·媒体
风华圆舞16 天前
Flutter + 鸿蒙 Intents Kit:页面直达能力的完整接入方案
flutter·ui·华为·harmonyos
鲲穹AI超级员工16 天前
多款实用配色工具汇总,适配设计、UI 创作等多元场景
ui·色彩设计
志栋智能16 天前
超自动化巡检:如何选择适合你的起点?
运维·自动化
HackTwoHub16 天前
Sqli-Scanner SQL注入SKILL自动化挖掘SQL注入,零依赖自动化SQL注入挖掘,赏金猎人
数据库·人工智能·sql·web安全·网络安全·自动化·系统安全
csdndeyeye16 天前
拆解AI投简历插件:塔塔网申的技术逻辑和实测数据
人工智能·自动化·秋招·ai投简历插件·ai找工作·求职助手·应届生就业
小白学大数据16 天前
Python + 大模型行业资讯自动化摘要流水线完整工程实现方案
开发语言·python·自动化