python自动化测试框架学习 之 HTMLtestrunner

前几天大致搭了个基于python的自动化测试框架:

 

其中reports是用来放生成报告的======

 

HTMLtestrunner 是基于unittest单元测试的html的一个库。

首先安装,安装的时候有点特殊,一般的python库直接pip install ... 即可,安装这个的时候我用这种方式试着安装了下“testrunner”和“html-testrunner” 后面发现没有正确的方法和参数,

遂上网搜了下,原来要自己先创建个HTMLTestRunner.py文件,可以在这里下载https://download.csdn.net/download/qq_41838901/11106286

下载后,将文件复制到你的python安装的lib目录下面,然后import HTMLTestRunner 即可。

 

接下来,开始接着看怎么生成html报告=======

放测试用例的文件内容大致如下:

run_main.py 文件里面就是执行测试用例,并且生成HTMLTestRunner报告的方法:

import os
import  unittest
import  time
import HTMLTestRunner
#当前脚本所在文件真实路径
cur_path = os.path.dirname(os.path.realpath(__file__))

#匹配所有的用例-以test开头的文件
def add_case(caseName="case",rule="test*.py"):
    case_path = os.path.join(cur_path,caseName)
    if not os.path.exists(case_path):os.mkdir(cur_path,caseName)
    print("test case path:%s "%case_path)
    discover = unittest.TestLoader().discover(case_path,pattern=rule,top_level_dir=None)
    print(discover)
    return discover

#执行用例生成报告
def run_case(reportName="reports"):
    now = time.strftime("%Y_%m_%d %H_%M_%S",time.localtime(time.time()))
    report_path = os.path.join(cur_path,reportName)
    if not os.path.exists(report_path):os.mkdir(cur_path,reportName)
    report_abspath = os.path.join(report_path,now+"result.html")
    print("report path :%s"%report_abspath)
    file = open(report_abspath, 'wb')
    runner = HTMLTestRunner.HTMLTestRunner(stream=file, title='reports')
    runner.run(add_case())
    
if __name__ =='__main__':
    run_case()

然后在执行的时候,结果报错了!!wtf!!

AttributeError: type object '_io.StringIO' has no attribute 'StringIO'

然后在网上搜索,发现是官网上的HTMLTestRunner.py文件 是用python2语法写的,然鹅,我这里用的是python3!!

所以,需要修改lib/目录下的HTMLTestRunner.py 文件,修改内容大致如下:

第94行,将import StringIO修改成import io

第539行,将self.outputBuffer = StringIO.StringIO()修改成self.outputBuffer = io.StringIO()

第642行,将if not rmap.has_key(cls):修改成if not cls in rmap:

第766行,将uo = o.decode('latin-1')修改成uo = e

第775行,将ue = e.decode('latin-1')修改成ue = e

第631行,将print >> sys.stderr, '\nTime Elapsed: %s' % (self.stopTime-self.startTime)修改成print(sys.stderr, '\nTime Elapsed: %s' % (self.stopTime-self.startTime))

具体可参考这篇文章:http://bbs.chinaunix.net/thread-4154743-1-1.html

 

修改后,再次运行测试用例,发现生成报告成功!!转圈!!

 

 

使用HTMLTestRunner 生成报告心得-----------------------------------

1、在执行用HTMLTestRunner 生成测试报告的时候,程序的错误信息是不会显示在控制台的,需要到他最后生成的报告里面去看错误信息,定位问题,如下:

 

 

 

 

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值