Airtest API精讲之报告日志log()
上期回顾:Airtest API精讲之断言
以下基于
python3.8;airtestIDE1.2.11;airtest1.2.2;pocoui1.0.83
log()用于将日志显示在Airtest HTML报告中,我们可以主动调用记录日志,Airtest自身也会调用log()记录执行日志。
源码解析
先来看看源码(不想看源码的可以直接跳到后面的演示实例):
# 文件位置:your_python_path/site-packages/airtest/core/helper.py
def log(arg, timestamp=None, desc="", snapshot=False):
from airtest.core.cv import try_log_screen
if G.LOGGER:
depth = 0
if snapshot:
# 如果指定了snapshot参数,强制保存一张图片
save_image = ST.SAVE_IMAGE
ST.SAVE_IMAGE = True
try:
try_log_screen(depth=2)
except AttributeError:
# if G.DEVICE is None
pass
else:
depth = 1
finally:
ST.SAVE_IMAGE = save_image
if isinstance(arg, Exception):
if hasattr(arg, "__traceback__"):
# in PY3, arg.__traceback__ is traceback object
trace_msg = ''.join(traceback.format_exception(type(arg), arg, arg.__traceback__))
else:
trace_msg = arg.message # PY2
G.LOGGER.log("info", {
"name": desc or arg.__class__.__name__,
"traceback": trace_msg,
}, depth=depth, timestamp=timestamp)
G.LOGGING.error(trace_msg)
elif isinstance(arg, six.string_types):
# 普通文本log内容放在"log"里,如果有trace内容放在"traceback"里
# 在报告中,假如"traceback"有内容,将会被识别为报错,这个步骤会被判定为不通过
G.LOGGER.log("info", {"name": desc or arg, "traceback": None, "log": arg}, depth=depth, timestamp=timestamp)
G.LOGGING.info(arg)
else:
G.LOGGER.log("info", {"name": desc or repr(arg), "traceback": None, "log": repr(arg)}, depth=depth,
timestamp=timestamp)
G.LOGGING.info(repr(arg))
参数:
arg:要记录的信息,显示在报告右侧。
timestamp:自定义该条log的时间,默认为time.time()。一般情况下我们就用默认值就好,所以可以忽略此参数。
desc:自定义log标题,默认与arg相同,显示在报告左侧。
snapshot:是否截屏,方便查看当时设备的情况。
源码很简单,先判断是否截图,是的话就截一张图;
之后判断arg是不是报错信息,是的话走记录报错的逻辑;
之后判断是普通文本走普通信息的逻辑(也就是我们要用到的情况);否则走特殊类型逻辑。
我们一般用到的就是普通信息的逻辑,这所以log()源码这么多种情况,是因为Airtest内部生成各种日志也会用到。
实例演示
# 例1:最典型的应用
log("开始执行用例")
# 例2:把json数据存到日志中
# 假设已经将json转为了字典
dic = {"q":"测试工程师小站","p":False,"g":[{"type":"sug","sa":"s_1","q":"一个测试工程师"},{"type":"sug","sa":"s_2","q":"测试开发工程师"},{"type":"sug","sa":"s_3","q":"测试技术工程师"},],"slid":"1536329420958301","queryid":"0x7c62fdc7d"}
log(dic, desc="请求返回的数据")
# 例3:异常时使用
# 正常应该找到"测试工程师小站",找不到时记录日志并截图
if poco("测试工程师小站").wait():
poco("测试工程师小站").click()
else:
log("未找到测试工程师小站", snapshot=True)
我们看下最后生成的报告:
例1:就是普通的一个信息的记录
例2:左侧显示描述,右侧记录了详细的数据
例3:因为元素是乱写的,肯定不存在,所以记录信息的同时截屏
---------------------------------------------------------------------------------
关注微信公众号即可在手机上查阅,并可接收更多测试分享~
推荐这些技术文章:
...
上期回顾:Poco API精讲之元素属性操作attr、setattr……
以下基于python3.8;airtestIDE1.2.13;airtest1.2.4;pocoui1.0.85
注意:Poco框架和Airtest框架很多API是同名的,但使用方法完全不一样!!!一定不要搞混了,我初学时也经常搞混,这点一定要注意!具体Poco框架和Airtest框架是什么关系,可以看之前文章:A...
上期回顾:Poco API精讲之点击click()、long_click()、double_click()
以下基于python3.8;airtestIDE1.2.13;airtest1.2.4;pocoui1.0.85
注意:Poco框架和Airtest框架很多API是同名的,但使用方法完全不一样!!!一定不要搞混了,我初学时也经常搞混,这点一定要注意!具体Poco框架和Airtest...
Poco API精讲之点击click()、long_click()、double_click()
上期回顾:Poco API精讲之 等待 wait
以下基于python3.8;airtestIDE1.2.13;airtest1.2.4;pocoui1.0.85
注意:Poco框架和Airtest框架很多API是同名的,但使用方法完全不一样!!!一定不要搞混了,我初学时也经常搞混,这点一定要注意!具体Poco框架和Airtest框架是什么关系,可以看之前文章:Airtest Proje...
maven系列目标:从入门开始开始掌握一个高级开发所需要的maven技能。
这是maven系列第5篇。
整个maven系列的内容前后是有依赖的,如果之前没有接触过maven,建议从第一篇看起,本文尾部有maven完整系列的连接。
环境
maven3.6.1...
异常捕获模块(traceback)
traceback.format_exc() 以字符串返回异常信息
traceback.print_exc() 直接打印出异常信息
if __name__ == "__main__":
try:
1 / 0
except Exception as e:
# format_exc()返回异常信息字符串...
上期回顾:Airtest和Poco坐标详解
以下基于python3.8;airtestIDE1.2.13;airtest1.2.4;pocoui1.0.85
上期说元素相对坐标(局部坐标系)时,有提到focus()方法,今天就来详细看看。
先看下其源码:
源码地址:your_python_path/site-packages/poco/proxy.py ...
116集成平台上扫移动护理系统输血情况数据,通讯点Database不出消息,报错
Caused by: java.sql.SQLException: Value '0000-00-00 00:00:00' can not be represented as java.sql.Timestamp
百度解决:
在使用MySql 时, 数据库中的字段类型是timestam...
上期回顾:Poco UI对象 API汇总
以下基于python3.8;airtestIDE1.2.13;airtest1.2.4;pocoui1.0.85
注意:Poco框架和Airtest框架很多API是同名的,但使用方法完全不一样!!!一定不要搞混了,我初学时也经常搞混,这点一定要注意!具体Poco框架和Airtest框架是什么关系,可以看之前文章:Airtest Project——...
1. 获取 Maven 的 settings.xml 文件
Artifactory -> Artifacts -> Set Me Up
点击 Set Me Up
Type password to insert your credentials to the code...
文章链接:https://www.dianjilingqu.com/3602.html
本文章来源于网络,版权归原作者所有,如果本站文章侵犯了您的权益,请联系我们删除,联系邮箱:saisai#email.cn,感谢支持理解。