准备工作
1.pycharm中,file>settling>project,下载相关第三方包,例如unittest、HTMLTestRunner等
2.创建项目,新建case、common、config、logs等package包,其中
case--存放测试用例的
common --存放一些共通的方法&公共函数
config--存放配置文件
logs--存放打印的日志
report--存放html测试报告
testfile--存放测试数据(excel参数文件)
runtest.mail.py--测试执行文件,用来执行测试用例、生成报告、发送邮件的
获取登录token
创建一个login.py文件,将获取token的方法写入,然后返回token值,便于主脚本调用,
测试用例脚本中,导入login文件,然后引用(将入参从excel中获取,然后调用login文件中的login_post方法)
from common import login
编写用例
使用unittest框架,编写时主要用到request函数进行接口请求,用例放在case包下,部分代码如下:
引用excel文件内容参数化
我使用的是xlrd读取的方式,将在excel中预置的测试入参数据读取出来(也可以使用openpyxl函数操作)
代码参考上图,下图为引用的excel文件部分内容。
执行用例
使用discover函数获取test前缀的.py测试用例文件,然后用unittest框架下的HTMLTestReport.run函数执行加载的测试用例,部分代码截图如下。
打印日志功能
1.打印日志功能,是为了在执行用例发生异常或者成功后,输出执行结果,方便定位,在rtest_case用例脚本的中加入try...except异常捕获机制,将日志输出功能放到里面
from logs.log import logger(要先将定义好的log文件导入进来,然后引用),下图是引入的log文件中的具体方法,引用的时候,直接logger.对应的级别(比如logger.error('自定义的error日志,报错'))。
执行用例后,查看mylog文件,会有日志更新,见下图
生成测试报告
测试报告使用的是HTMLTestReportCN函数(原始函数是HTMLTestReport,我在网上找的测试报告格式优化后的脚本),代码实现如下:
#定义报告存放路径
filename = test_report + "\\" + now + 'result.html'
fp = open(filename,'w+',encoding='utf-8')
runner = HTMLTestReportCN.HTMLTestReportCN(stream = fp,title = "XX转测版本接口自动化测试报告,单个用例执行详情请参考附件",description = "测试用例执行情况:")
执行用例后,到指定路径下查看,会有一个html格式的报告文件,优化后的内容如下展示:
发送邮件
使用smtp函数进行发送邮件功能的实现,MIMEMultipart函数实现发送附件的功能,部分代码实现如下(将邮件的服务器地址、收件人、发件人具体数据都放到cfg.ini配置文件中,然后创建一个readConfig.py文件,用os模块调用配置数据,使用的时候,主程序导入redconfig文件,然后调用):
jenkins持续集成,定时跑测试用例
1.安装jenkins,Jenkins download and deployment,选择war包下载到本地
2.对应路径下,在本地运行cmd,输入命令java -jar jenkins.war,执行后,出现以下信息,证明安装成功
3.然后访问http://localhost:8080/地址,然后创建项目。
4.构造定时任务,图上的定时任务设置的是每隔5分钟执行一次
5.构建执行命令,用来执行run脚本,然后点击保存
6.返回列表,列表中展示这种效果,证明执行成功了
7.若执行失败,也可以点击项目链接,进去后,查看执行日志,点击日志详情后,会有执行过程中的报错信息,便于定位报错。