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

相关推荐
Ln5x9qZC25 小时前
Asp.Net MVC杂谈之:—步步打造表单验证框架[重排版](1)
ui
fe7tQnVan6 小时前
三大 Agent-UI 协议深度剖析:AG-UI、A2UI 与 MCP-UI 的设计哲学与工程实践
ui·状态模式·命令模式
LcGero6 小时前
Lua + Cocos Creator 实战:用 Lua 驱动 UI 与游戏逻辑
游戏·ui·lua
ZC跨境爬虫6 小时前
免费验证码识别:用ddddocr实现Playwright自动化登录
爬虫·python·自动化
Datawhale6 小时前
Claude AI 全套课程,如何从零开始构建并自动化各种项目!
运维·人工智能·自动化
ZC跨境爬虫7 小时前
Playwright进阶操作:鼠标拖拽与各类点击实战(含自定义拖拽实例)
前端·爬虫·python·ui
DYuW5gBmH7 小时前
如何一步步将 ASP.NET MVC 升级为.NET
ui
不明觉厉二十年7 小时前
pytest+pywinauto+pycharm制作mobaxterm 字符串快捷发送器 Demo
ide·pycharm·pytest
for_ever_love__7 小时前
Objective-C学习:UI的初步了解
学习·ui·objective-c
小灰灰搞电子8 小时前
Qt UI 线程详解-阻塞与解决方案
开发语言·qt·ui