如何才能让用例自动运行完之后,生成一张直观可看易懂的测试报告呢?

小编使用的是unittest的一个扩展HTMLTestRunner

  • 环境准备

使用之前,我们需要下载HTMLTestRunner.py文件

点击HTMLTestRunner后进入的是一个写满代码的网页,小编推荐操作:右键 --> 另存为,文件名称千万不要改

python3使用上述HTMLTestRunner可能会报错,可以替换如下文件

 HTMLTestRunner

使用
接下来,小编将以登录网易邮箱为例,生成一份最基础的测试报告。小伙伴们copy走代码验证时一定记得修改账号密码哦。

目录结构如下:

将HTMLTestRunner.py文件存放到package包下,将test_login.py存放到testcase目录下,用于编写测试用例,建立testreport包,用于存放测试报告,在email目录下建立run_test.py,用于执行测试

HTMLTestRunner的使用方法在代码注释中介绍和解释【test_login.py】

 
from selenium import webdriver
import unittest,time
 
class Login(unittest.TestCase):
    def setUp(self):
        #打开百度,搜索“163网易邮箱”,登录
        driver=webdriver.Firefox()
        driver.implicitly_wait(5)
        self.driver=driver
        driver.get("https://www.baidu.com/")
 
        driver.find_element_by_id("kw").send_keys("163邮箱登录")
        driver.find_element_by_id("su").click()
 
        name = driver.find_element_by_id("op_email3_username")
        password = driver.find_element_by_class_name("op_email3_password")
        login = driver.find_element_by_css_selector(".c-btn")
 
        #如下操作可以使setUp中的变量被其他模块调用
        self.name=name
        self.password=password
        self.login=login
 
    def tearDown(self):
        self.driver.quit()
 
    def switch_window(self):
        #切换窗口
        for handle in self.driver.window_handles:
            self.driver.switch_to.window(handle)
            #j增加等待时间,可以提高测试用例执行的健壮性
            time.sleep(2)
        time.sleep(3)
 
    #成功登录
    def test_right_login(self):
        #账号密码自行填写
        self.name.send_keys("xxx")
        self.password.send_keys("xxx")
        self.login.click()
 
        self.switch_window()
        #t通过新窗口的title验证用例是否通过
        self.assertEqual(self.driver.title,"网易邮箱6.0版","登录失败")
 
    #密码为空登录
    def test_null_psw_login(self):
        self.name.send_keys("xxx")
        time.sleep(3)
        self.login.click()
        self.switch_window()
        # t通过新窗口的title验证用例是否通过
        self.assertEqual(self.driver.title,"网易帐号中心 > 用户验证","未跳转至用户验证界面")

【run_test.py】

 
#导入HTMLTestRunner的包
from package import HTMLTestRunner
#导入test_login的包,执行测试用例时需使用
from testcase.test_login import *
 
#定义要执行的测试用例的路径
test_dir = './testcase'
#定义要执行的测试用例的路径和名称格式
#test_*.py的意思是,./testcase路径下文件名称格式为test_*.py的文件,*为任意匹配,路径下有多少的test_*.py格式的文件,就依次执行几个
discover = unittest.defaultTestLoader.discover(test_dir, pattern='test_*.py')
#定义测试报告的名称和存储位置
filename = './testreport/loginReport.html'
 
#开始执行
if __name__ == '__main__':
 
    suit=unittest.TestSuite()
    suit.addTest(Login("test_right_login"))
    suit.addTest(Login("test_null_psw_login"))
 
    #以wb(可写的二进制文件)形式,打开文件,若文件不存在,则先执行创建,再执行打开
    fp = open(filename, 'wb')
    #调用HTMLTestRunner生成报告
    runner = HTMLTestRunner.HTMLTestRunner(
        # 指定测试报告的文件
        stream=fp,
        # 测试报告的标题
        title=u"登录网易邮箱测试报告",
        # 测试报告的副标题
        description=u'用例执行情况(win7 64位)'
    )
    #执行用例
    runner.run(discover)
  • 报告展示

 最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

文档获取方式:

这份文档,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!

以上均可以分享,只需要你搜索vx公众号:程序员雨果,即可免费领取