Unittest扩展-自动生成HTML测试报告

Unittest扩展-自动生成HTML测试报告

在脚本运行完成之后,除了在log.txt文件查看到运行日志外,还可以使用HTMLTestRunner生成测试报告。HTMLTestRunner是在Python标准库的unittest单元测试框架下的一个扩展。

1 下载HTMLTestRunner.py

首先要下载HTMLTestRunner.py文件,下载地址如下:
http://tungwaiyip.info/software/HTMLTestRunner.html

HTMLTestRunner.py放置在Python的安装目录Lib路径下。

2 修改HTMLTestRunner.py

HTMLTestRunner.py是基于Python2来写的,若解释器为Python2,则不需要修改;
若解释器为Python3,为了使其支持Python3的环境,则需要针对HTMLTestRunner.py做一些修改。
python3中运行以上脚本报ImportError: No module named ‘StringIO’,因为HTMLTestRunner.py是基于python2开发的,在解决完问题1后,需要通过编辑器修改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))

3 生成HTML测试报告案例

简单的以百度搜索功能测试为例:
在这里插入图片描述

生成HTML测试报告案例
简单的以百度搜索功能测试为例:

#!/usr/bin/env python
# -*- coding: UTF-8 -*-
"""=================================================
@Project -> File   :Auto_Test_First -> testBaidu.py
@IDE    :PyCharm
@Author :Mr.
@Date   :2019/11/26 19:36
@Desc   :百度搜索功能测试,生成测试报告
=================================================="""

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import Select
from selenium.common.exceptions import NoSuchElementException
from selenium.common.exceptions import NoAlertPresentException
import unittest, time, re
from HTMLTestRunner import HTMLTestRunner

class BaiduIde(unittest.TestCase):
    """百度测试类"""

    def setUp(self):
        self.driver = webdriver.Firefox()
        self.driver.implicitly_wait(20)
        self.base_url = "https://www.baidu.com/"
        self.verificationErrors = []
        self.accept_next_alert = True

    def test_baidu(self):
        """搜索关键词"""
        driver = self.driver
        driver.get(self.base_url + "/")
        driver.find_element_by_id("kw").clear()
        driver.find_element_by_id("kw").send_keys("HTMLTestRunner")
        driver.find_element_by_id("su").click()
        try:
            self.assertEqual("HTMLTestRunner_百度搜索", driver.title)
        except AssertionError as e:
            self.verificationErrors.append(str(e))
        driver.find_element_by_id("kw").clear()
        driver.find_element_by_id("kw").send_keys("Python+selenium")
        driver.find_element_by_id("su").click()

    def is_element_present(self, how, what):
        try:
            self.driver.find_element(by = how, value = what)
        except NoSuchElementException as msg:
            return False
        return True

    def is_alert_present(self):
        try:
            self.driver.switch_to_alert()
        except NoAlertPresentException as msg:
            return False
        return True

    def close_alert_and_get_its_text(self):
        try:
            alert = self.driver.switch_to_alert()
            alert_text = alert.text
            if self.accept_next_alert:
                alert.accept()
            else:
                alert.dismiss()
            return alert_text
        finally:
            self.accept_next_alert = True

    def tearDown(self):
        self.driver.quit()
        self.assertEqual([], self.verificationErrors)


if __name__ == "__main__":
    # unittest.main()
    # 构造测试集
    suite = unittest.TestSuite()
    suite.addTest(BaiduIde("test_baidu"))

    # # 方法一:原生的执行测试方法,生成测试日志log.txt
    # runner = unittest.TextTestRunner()
    # runner.run(suite)

    # 方法二:
    # 获取当前时间,目的是为了生成及时报告
    now_time = time.strftime("%Y_%m_%d_%H_%M_%S")
    # 定义报告存放路径
    fp = open("./Report/testReport"+now_time+".html", "wb")
    # 定义测试报告
    runner = HTMLTestRunner(stream=fp,
                            title="百度网搜索功能的测试报告",
                            description="测试用例执行情况:")
    # 运行测试用例
    runner.run(suite)
    # 关闭报告文件
    fp.close()
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值