unittest单元测试不支持直接生成测试报告,因此测试报告都是通过第三方模块来进行导出。
而第三方库导出的测试报告呈现以HTML形式,而第三方模块名称为 HTMLTestRunner
下载地址:http://tungwaiyip.info/software/HTMLTestRunner.html
1.图下选择红框里的HTMLTestRunner.py,打开后把网页另存为即可下载。
2.下载好后把HTMLTestRunner.py放到python的Lib目录下即可

在使用的时候导入HTMLTestRunner包即可。
以下为代码演示(其中封装好的发送邮件模块,请点击Send_email查阅)
#coding:utf-8
import sys
reload(sys)
sys.setdefaultencoding('utf-8') #以上三行是python2.x版本需要加入,不然会报错
from selenium import webdriver
import unittest
import os
from HTMLTestRunner import HTMLTestRunner
from time import sleep
from Send_email import send_email #导入已封装好的发送邮件模块
class Baidu_search(unittest.TestCase):
def setUp(self):
self.bro = webdriver.Chrome()
self.bro.maximize_window()
self.bro.get("https://www.baidu.com")
sleep(1)
def tearDown(self):
sleep(1)
self.bro.quit()
def test_search2(self):
self.bro.find_element_by_id("kw").send_keys(u"第二次单元测试")
self.bro.find_element_by_id("su").click()
sleep(1)
def test_search1(self):
self.bro.find_element_by_id("kw").send_keys(u"第一次单元测试")
self.bro.find_element_by_id("su").click()
sleep(1)
if __name__ == "__main__":
# 获取当前工作目录:
test_dir = os.path.join(os.path.dirname(os.path.realpath(__file__)))
#默认加载覆盖当前目录下的test匹配的测试用例:
discover = unittest.defaultTestLoader.discover(test_dir,pattern="test*.py",top_level_dir=None)
#测试报告保存路径:保存在当前目录,以result.hmtl为名保存,该名可以随意取
test_report = os.path.join(os.path.dirname(os.path.realpath(__file__)),"result.html")
#通过打开文件流,以二进制的格式写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件:
fp = open(test_report,"wb")
#实例化测试报告对象,其中有三个参数,stream表示文件流,title表示测试报告标题,description表示测试报告描述:
runner = HTMLTestRunner(stream=fp,title=u"我是测试报告标题",description="我是测试报告描述")
runner.run(discover) #执行测试用例
fp.close() #关闭数据流才会生成测试报告
send_email() #发送测试报告到指定邮件
总结:
1. 使用HTMLTestRunner必须导入包:from HTMLTestRunner import HTMLTestRunner
2. 测试报告保存路径写法: 测试报告文件名 = os.path.join(os.path.dirname(os.path.realpath(__file__)),"result.html")
3. 打开文件流,写入报告: fp = open(测试报告文件名,"wb")
4. 实例化测试报告对象: 测试报告对象名 = HTMLTestRunner(steam=fp,title="测试的报告标题",description="测试的报告描述")
5. 关闭文件数据流: fp.close()
6. 若用python2.x版本需要导入:
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
1585



被折叠的 条评论
为什么被折叠?



