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

相关推荐
pop_xiaoli20 分钟前
OC—UI学习-2
学习·ui·ios
程序员的世界你不懂2 小时前
Appium+python自动化(十)- 元素定位
python·appium·自动化
钢铁男儿13 小时前
一文掌握 Tombola 抽象基类的自动化子类测试策略
运维·自动化
痴人说梦梦中人13 小时前
SwaggerFuzzer:一款自动化 OpenAPI/Swagger 接口未授权访问测试工具
网络安全·渗透测试·自动化·api测试·漏洞利用·信息搜集
界面开发小八哥14 小时前
界面开发框架DevExpress XAF实践:集成.NET Aspire后如何实现数据库依赖?
ui·.net·界面控件·devexpress·ui开发·xaf
Kookoos21 小时前
Dynamics 365 Finance + Power Automate 自动化凭证审核
运维·自动化·dynamics 365·power automate
半导体守望者1 天前
ADVANTEST R3764 66 R3765 67爱德万测试networki connection programming网络程序设计手册
经验分享·笔记·功能测试·自动化·制造
Humbunklung1 天前
Rust Floem UI 框架使用简介
开发语言·ui·rust
努力搬砖的咸鱼1 天前
从零开始搭建 Pytest 测试框架(Python 3.8 + PyCharm 版)
python·pycharm·pytest
东方佑1 天前
使用 Python 自动化 Word 文档样式复制与内容生成
python·自动化·word