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

【B站最通俗易懂】Python接口自动化测试从入门到精通,超详细的进阶教程,看完这套视频就够了

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

  • 环境准备

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

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

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

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

 HTMLTestRunner

  • 使用

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

目录结构如下:

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

 将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)

  • 报告展示

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

你可能感兴趣的:(python,开发语言)