You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何在pytest中禁用Appium的调用日志与初始化日志?

解决pytest捕获Appium日志的问题

我完全懂你的困扰——用pytest跑Appium iOS自动化测试时,只要用例失败,就会冒出一堆"Captured log call"和"Captured log setup"的Appium日志,加了-s参数也没效果对吧?其实-s只是禁用标准输入输出的捕获,对Python日志模块的输出不生效,这才导致这些日志还是会被打印出来。

给你几个实用的解决办法:

方法一:通过配置文件全局禁用

在项目根目录创建pytest.ini文件,添加以下配置:

[pytest]
log_cli = false
log_level = CRITICAL

这样设置后,pytest只会捕获CRITICAL级别的日志,而Appium的日志大多是INFO或DEBUG级别的,自然就不会被打印出来了。如果不想用pytest.ini,也可以在conftest.py里加钩子函数实现同样效果:

def pytest_configure(config):
    config.option.log_cli = False
    config.option.log_level = "CRITICAL"

方法二:命令行直接指定参数

不用改配置文件,直接在运行命令里追加日志相关参数:

pytest -v iOS_Sanity --no-log-cli --log-level CRITICAL

--no-log-cli会关闭命令行的日志输出,--log-level CRITICAL把日志阈值拉到最高,只有严重错误才会被捕获。

方法三:单独屏蔽Appium日志

如果还想保留其他模块的日志,只是屏蔽Appium的,可以在测试脚本里调整Appium日志器的级别:

import logging

# 获取Appium对应的日志器(通常日志名为'appium')
appium_logger = logging.getLogger('appium')
# 将日志级别设为CRITICAL,只保留严重错误日志
appium_logger.setLevel(logging.CRITICAL)

你可以先试试方法二,直接在命令行加参数,最快见效;如果需要长期生效,方法一的配置文件会更省心。

内容的提问来源于stack exchange,提问作者Ron Serruya

火山引擎 最新活动