Macaca+HTMLTestRunner测试报告模式修改,基于python unittest 测试框架扩展
2017-07-17 11:54
1561 查看
将HTMLTestRunner.py文件放入到python环境变量目录中,或者放入到工程文件中。个人选择的是放入工程文件中,在运行时,直接 import HTMLTestRunner.py
源地址:http://tungwaiyip.info/software/HTMLTestRunner.html
文末附更新的文件
使用macaca启动测试,最后使用HTMLTestRunner输出测试报告:
1. 在开始之前先创建测试报告的模版和设定保存测试报告的地址
2. 创建文件保存测试结果,给测试报告设置标题
3. 以报告模版运行测试用例
4. 可以和任何支持python的测试自动化框架结合生成测试报告
5. 当然这个是延续macaca自动化测试框架来做的,创建完成后,以该模版测试运行测试组,(测试组的用法之后再详细叙述)
6. 具体代码如下:
配置HTMLTestRunner文件,更改测试报告的显示和数据:
7. 查看了基本生成的测试报告页面,能满足基本需求,但是更高阶的需求就满足不了了,这里可以通过修改HTMLTestRunner文件来达到生成不同页面,传输其他需要显示的数据。
8. HTMLTestRunner文件主要内容为,开始创建了一个html文件的模版,然后再把测试过程中获取到的数据塞入这个模版当中
9. 首先要更改html模版,我个人是增加了一列用来显示运行时的截图
10. 其次在后面添加需要传输相关的数据表示,当碰到有特定输出时,自动去获取相关的图片显示在页面中
11. 当然你还可以更改页面显示,配色等,这里就不详细阐述,熟悉下html的结构基本就可以改动出来
12. 部分改动代码如下:
附更新后的HTMLTestRunner文件:
链接: https://pan.baidu.com/s/1qY0StUs 密码: sx7e
源地址:http://tungwaiyip.info/software/HTMLTestRunner.html
文末附更新的文件
使用macaca启动测试,最后使用HTMLTestRunner输出测试报告:
1. 在开始之前先创建测试报告的模版和设定保存测试报告的地址
2. 创建文件保存测试结果,给测试报告设置标题
3. 以报告模版运行测试用例
4. 可以和任何支持python的测试自动化框架结合生成测试报告
5. 当然这个是延续macaca自动化测试框架来做的,创建完成后,以该模版测试运行测试组,(测试组的用法之后再详细叙述)
6. 具体代码如下:
#coding:utf-8 __author__ = 'JiaBi Zhao' import unittest import os import time import HTMLTestRunner import androidTest.macaca_test_android import iosTest.macaca_test_ios #获取当前文件的路径 path = os.path.abspath('.') if __name__ == '__main__': #打开一个文件,将result写入此file中 fp=open(path+"/result.html",'wb') #创建文件保存测试结果,设置标题,描述 runner=HTMLTestRunner.HTMLTestRunner(stream=fp,title='Demo Test',description='Test Result:') #运行测试组,其他文件中的测试组 runner.run(androidTest.macaca_test_android.suite()) # runner.run(iosTest.macaca_test_ios.suite()) fp.close()
配置HTMLTestRunner文件,更改测试报告的显示和数据:
7. 查看了基本生成的测试报告页面,能满足基本需求,但是更高阶的需求就满足不了了,这里可以通过修改HTMLTestRunner文件来达到生成不同页面,传输其他需要显示的数据。
8. HTMLTestRunner文件主要内容为,开始创建了一个html文件的模版,然后再把测试过程中获取到的数据塞入这个模版当中
9. 首先要更改html模版,我个人是增加了一列用来显示运行时的截图
10. 其次在后面添加需要传输相关的数据表示,当碰到有特定输出时,自动去获取相关的图片显示在页面中
11. 当然你还可以更改页面显示,配色等,这里就不详细阐述,熟悉下html的结构基本就可以改动出来
12. 部分改动代码如下:
def _generate_report_test(self, rows, cid, tid, n, t, o, e): # e.g. 'pt1.1', 'ft1.1', etc has_output = bool(o or e) tid = (n == 0 and 'p' or 'f') + 't%s.%s' % (cid+1,tid+1) name = t.id().split('.')[-1] doc = t.shortDescription() or "" desc = doc and ('%s: %s' % (name, doc)) or name tmpl = has_output and self.REPORT_TEST_WITH_OUTPUT_TMPL or self.REPORT_TEST_NO_OUTPUT_TMPL # o and e should be byte string because they are collected from stdout and stderr? if isinstance(o,str): # TODO: some problem with 'string_escape': it escape \n and mess up formating # uo = unicode(o.encode('string_escape')) uo = o.decode('latin-1') else: uo = o if isinstance(e,str): # TODO: some problem with 'string_escape': it escape \n and mess up formating # ue = unicode(e.encode('string_escape')) ue = e.decode('latin-1') else: ue = e script = self.REPORT_TEST_OUTPUT_TMPL % dict( id = tid, output = saxutils.escape(uo+ue), ) ######################################################## #特别注意,这里添加了image,caseid,htm的变量 image = self.REPORT_TEST_OUTPUT_IMAGE % dict( screenshot = saxutils.escape(uo+ue) ) index = -1 index2 = -1 arr = [] i = 0 while True: index = image.find('screenshot_',index+1) index2 = image.find('png',index2+1) if index==-1: break stmpl = self.REPORT_TEST_SCREENSHOOT_TMPL html2 = stmpl % dict( image = image[index:(index2+3)], ) arr.append(html2) i += 1 x = 0 html = '' while x < i: html = html + arr[x] x += 1 caseid = self.REPORT_TEST_OUTPUT_CASEID % dict( case_id = saxutils.escape(uo+ue) ) ##################################################### #注意这里row的变量中增加了html和caseid的数据,会把log传进来的数据以这个格式传输到页面当中选择自己需要的 row = tmpl % dict( tid = tid, Class = (n == 0 and 'hiddenRow' or 'none'), style = n == 2 and 'errorCase' or (n == 1 and 'failCase' or 'none'), desc = d 4000 esc, script = script, ######################################################## html = html, caseid = caseid[caseid.find("case")(int(caseid.find("case"))+9)], status = self.STATUS , ) rows.append(row) if not has_output: return #######################################################
#如果需要引用相关的参数使用如下格式 %(screenshot)s %(case_id)s %(html)s
附更新后的HTMLTestRunner文件:
链接: https://pan.baidu.com/s/1qY0StUs 密码: sx7e
相关文章推荐
- Python之使用unittest框架和HTMLTestRunner.py文件实现多个测试用例执行与测试报告生成
- python调用HTMLTestRunner+unittest实现一次执行多个测试类,并生成与每个测试类对应的测试报告,并不像某些人写的每次只执行一个测试类,具体看代码,附上整个project代码
- Appium基于python unittest自动化测试并生成html测试报告
- python+selenium+unittest+HTMLTestRunner读取csv文件参数化登陆测试
- Python 使用 HTMLTestRunner.py 生成测试报告
- 基于unittest测试框架的扩展
- python--selenium实用的自动生成测试HTML报告方法--HTMLTestRunner
- python--selenium一种实用的自动生成测试HTML报告方法--HTMLTestRunner
- appium2-基于python调用unittest框架对iOS进行自动化测试
- python的unittest测试框架的扩展浅谈
- python使用 HTMLTestRunner.py生成测试报告
- MAC 搭建自动化测试环境(基于Appium+python+ios/android+unnitest+HTMLTestRunner)(一)
- 给测试报告添加饼图之修改HTMLTestRunner.py文件
- python unittest 测试结束后发送测试报告
- python测试框架——unittest和nosetest
- Python利用unittest框架编写接口测试小栗子
- unittest 生成 HTMLTestRunner 测试报告
- unittest + HTMLTestRunner 自动化测试
- Python Unittest 自动化单元测试框架Demo
- Python单元测试框架unittest测试过程简介