基于python的自动化测试框架

转发链接:https://blog.csdn.net/qq_41838901/article/details/89204623

 

前几天大致搭了个基于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 生成测试报告的时候,程序的错误信息是不会显示在控制台的,需要到他最后生成的报告里面去看错误信息,定位问题,如下:

 

 

 



 

posted @ 2022-04-13 15:56  lllwy  阅读(307)  评论(0编辑  收藏  举报