1、自动化测试框架表示层
既然是表示层,那么它应该就是漂漂亮亮的展示在众人面前,令人眼前一亮、赏心悦目呢!!!
-
本章内容前提是基于结合Python单元测试框架unittest使用Jinja模版的HTMLTestRunner报告模块;
听起来有点绕,无非就是使用python+unittest做接口/Ui自动化时生成HTML报告模块:HTMLTestRunner。
-
所以这章节就是介绍HTMLTestRunner样式报告的进阶之路,看看它如何从丑小鸭变成白天鹅。
2、unittest测试框架默认TextTestRunner执行器产生报告
准备unittest测试用例类Demo
'''
Created on 2021年7月19日
@author: joe-tester
'''
import unittest
class Test(unittest.TestCase):
@classmethod
def setUpClass(cls):
cls.a=3
cls.b=5
cls.c=None
def testName1(self):
self.c=self.a+self.b
self.assertEqual(self.c, 8, "断言失败")
def testName2(self):
self.c=self.a-self.b
self.assertEqual(self.c, -2, "断言失败")
def testName3(self):
self.c=self.a/self.b
self.assertEqual(self.c, 0.6, "断言失败")
def testName4(self):
self.c=self.a%self.b
self.assertEqual(self.c, 0, "断言失败")
def testName5(self):
self.c=self.a*self.b
self.assertEqual(self.c, 15, "断言失败")
2.1、unittest自带测试执行器TextTestRunner结果展示
加载测试类执行器
from unittest.runner import TextTestRunner
suite = unittest.TestSuite()
loader = unittest.TestLoader()
suite.addTest(loader.discover(start_dir="./", pattern='HTML*.py'))
with open("test.txt","w") as pf:
text=TextTestRunner(stream=pf,verbosity=2)
text.run(suite)
-
它生成的是基础的文本报告,可以看作是执行过程
2.2、开始进阶:HTMLTestRunner
将上文中的执行器进行改造
from Librarys import HTMLTestRunner
suite = unittest.TestSuite()
loader = unittest.TestLoader()
suite.addTest(loader.discover(start_dir="./", pattern='HTML*.py'))
from Librarys import HTMLTestRunner
with open("index_demo.html", "wb") as pf:
runner = HTMLTestRunner(stream=pf, title="xxxxx项目接口自动化测试报告",description="接口自动化测试")
runner.run(suite)
-
报告展示如下:至少已经有html的样子了
注意:HTMLTestRunner在源码执行过程中有几处错误需要修改
1、StringIO模块异常,使用io模块
2、has_keys模块异常,换个条件判断
3、默认是python2,为啥因为里面有print >> 改成pring("error_info")
4、还有uo = o.decode('latin-1')转码错误;改成uo=o
复制代码
2.3、再次优化:HTMLTestRunnerCN
一看上面的html报告样式,比较low,所以需要对样式进行优化
-
这样就够了吗?当然不,如果是UI自动化测试,需要对测试失败的用例进行截图怎么办?
2.4、再次进化:HTMLTestRunnerSt
这里就不演示截图效果了,在用例下添加截图方法即可
3、总结报告的样子
测试报告从unittest默认执行器产生的结果文本,到html初级、再到高级,最后兼容UI截图报告展示。已经算是无线美化了;但是最为一个有追求的测试,这样是不够的,为了再多一点点花里胡哨的效果,下面接着推荐!
4、BeautifulReport更加优美的测试报告
环境准备,BeautifulReport是可以通过pip install 下载的
pip install BeautifulReport==0.0.2
主程序执行器修改如下:
from BeautifulReport import BeautifulReport
suite = unittest.TestSuite()
loader = unittest.TestLoader()
suite.addTest(loader.discover(start_dir="./", pattern='HTML*.py'))
BeautifulReport(suite).report(description="单接口批量测试", filename="xxxx接口自动化测试报告", report_dir=".")
-
HTML效果展示如下,是不是level又高了一级?
最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走!
软件测试面试文档
我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。