1)能够组织多个用例去执行
2)提供丰富的断言方法
3)可以使用UnitTest来管理测试用例
4)已经实现了很多基本功能避免重复造轮子
因为我们在新建脚本时就是采用的py脚本。
里面使用的语法就是Python语法。
所以我们可以直接把文件内容粘贴复制到Python运行
- 各个case互相存在关联性
- 报告没有独立
每个case要产生自己的报告 那么应该在初始化的时候 有一个单独的文件夹存放自己运行过程中产生的日志数据,等待生成报告的时候在读取该文件夹渲染到指定报告文件
为了让每个case有自己的报告,那么每个函数都需要调用一次auto_steup(),但是auto_steup()里面还包含了连接操作,这样做意味中调用一次函数就连接一次。这显然是不合理的。所以我们需要重写auto_setup()
原本的auto_steup()实现了建立连接和创建日志文件夹两个功能。那我们可以模仿他的代码,进行重写。重写两个方法一个就是建立连接一个就是创建日志文件夹
即使程序报错也要执行报告生成的方法 捕获异常
try execpt else finally
每个case中,会发现有很多的重复操作 如建立日志文件夹,都需要异常捕获,然后生成报告这些操作。那这些操作可以使用装饰器来进行优化。
引入日志
函数执行时间统计
执行函数前预备处理
执行函数后清理功能
权限校验等场景
def get_parameter(logname):
"""
装饰器接收参数
:param logname: 日志文件夹名称
:return:
"""
def outer(func):
def inner(self,*args, **kwargs):
only_set_logdir(LogsDIR + logname)
try:
arg = func(self,*args, **kwargs)
except Exception as e:
print(e)
log(e, snapshot=True)
raise e
finally:
simple_report(__file__, logpath=LogsDIR+logname, output=ReportDIR +logname+".html")
return arg
return inner
return outer
raise使用场景:
比如在unittest框架中若不使用 raise 抛出异常,系统是看代码有没有报错,
原本代码是有1个错误,但我们使用except捕获异常了,对于代码来说这是你期望的错误,你已经自己把它捕获了
但代码整体执行并没有报错,对于unittest来说就没有异常了
所以要 用到抛出异常,unittest就会判断该条case执行失败
pip install BeautifulReport
BeautifulReport的页面的确很beautiful,
但是如果将这个页面和我们的airtest生成的报告结合起来?
相对于BeautifulReport产出的只是一个目录页面,我们需要一个链接跳转到指定详情页面
需要改变的其实就是字段的新增以及新增字段的显示
目标:新增两列(开始运行时间和报告详情列)
主要改动的地方在于以下两个函数
1、get_testcase_property
: 添加新增字段的获取
2、 修改MakeResultJson
里的__repr__
使新增的字段能够正常压缩对应
template.html文件新增字段 th新增两列
template.html文件新增字段 td新增两列
生成报告时的css样式是用的绝对路径
将airtest生成报告所需要的css,js等一些文件夹也放到静态服务器,后期生成的报告引用文件都引用服务器地址
日志图片数据也是用的绝对路径
将这些log数据也放到静态服务器,后期生成的报告引用文件都引用服务器地址
在项目 目录下创建 static
文件夹
运行服务即可通过 地址:端口/static/文件路径 访问该静态文件
原文:https://www.cnblogs.com/qvchuang/p/15142703.html