[SP_10] 单元测试(UnitTest)之Web测试应用实战、测试报告生成

目录结构

一、编写Web测试用例
二、测试报告生成
三、测试报告颜值优化


一、编写Web测试用例

案例:Baidu搜索关键词"百度",在搜索结果页面中,验证页面的Title内容,然后根据页面中定位到链接文字进行点击打开新页面

项目文件目录

--TestBaidu 文件夹
    --TestCase 文件夹
        --test_baidu.py
    --runtest.py

test_baidu.py

from selenium import webdriver
from time import sleep
import unittest

# 创建TestBaidu类,继承unittest.TestCase;实现定位搜索,验证搜索,定位打开新页面
class TestBaidu(unittest.TestCase):
    # 用例执行前准备工作
    def setUp(self):
        self.driver = webdriver.Chrome()
        self.driver.implicitly_wait(6)
        self.driver.get("https://www.baidu.com")

    # 在TestBaidu类下构造test_baidu()方法
    def test_baidu(self):
        driver = self.driver
        driver.find_element_by_id("kw").clear()
        driver.find_element_by_id("kw").send_keys("百度")
        driver.find_element_by_id("su").click() # 定位搜索
        sleep(3)

        # 设置断言,验证搜索结果当前页面对应的title内容
        title = driver.title
        self.assertEqual(title,"百度_百度搜索")

        # 定位打开百度网盘新页面
        driver.find_element_by_partial_link_text("百度网盘").click()
        sleep(5)

    # 用例执行后的处理操作
    def tearDown(self):
        self.driver.quit()

# 调试TestBaidu测试类
if __name__ == '__main__':
    unittest.main()

执行结果:

[SP_10] 单元测试(UnitTest)之Web测试应用实战、测试报告生成_第1张图片

通过模块调用进行用例执行
testrun.py

# 执行测试用例
import unittest

test_dir = "./TestCase"
discover = unittest.defaultTestLoader.discover(test_dir,pattern="test*.py")

if __name__ == '__main__':
    runner = unittest.TextTestRunner()
    runner.run(discover)

执行结果:



二、测试报告生成

自动化测试执行完成后,需要生成测试报告来查看测试结果,使用HTMLTestRunner模块可直接生成Html格式的报告。

下载传送门:(适用于Python2.x)
http://tungwaiyip.info/software/HTMLTestRunner.html

适用于Python3.x的模块需要修改以上下载的部分代码:

  • 94行:引入的名称从import StringIO--->import io
  • 539行:self.outputBuffer = StringIO.StringIO()--->self.outputBuffer = io.StringIO()
  • 631行:print >>sys.stderr, '\nTime Elapsed: %s' % (self.stopTime-self.startTime)--->print (sys.stderr, '\nTime Elapsed: %s' % (self.stopTime-self.startTime))
  • 642行;if not rmap.has_key(cls):--->if not cls in rmap:
  • 766行:uo = o.decode('latin-1')--->uo = o
  • 772行:ue = e.decode('latin-1')--->ue = e

存放路径:
将以上修改完成的HTMLTestRunner模块存放在Python3.x路径下Lib目录里面即可

项目的目录结构

[SP_10] 单元测试(UnitTest)之Web测试应用实战、测试报告生成_第2张图片
  • 在第一步编写Web测试用例的基础上,同一个项目文件Test_Baidu文件夹下新建一个TestReport文件夹,用来存放生成的测试报告
  • 然后再新建一个runtest_Report.py文件用来作为执行测试用例、把测试结果写入并生成测试报告的脚本

runtest_Report.py

import unittest
from HTMLTestRunner import HTMLTestRunner
import time

# 定义测试用例的路径
test_dir = "./TestCase"
discover = unittest.defaultTestLoader.discover(test_dir,pattern="test*.py")

if __name__ == '__main__':
    report_dir = "./TestReport" # 定义存放报告的路径
    now = time.strftime("%y-%m-%d %H_%M_%S")    # 对报告的时间命名格式化
    report_name = report_dir+'/'+now+"result.html"  # 报告文件的完整路径

    # 打开文件,在报告文件写入测试结果
    with open(report_name,'wb') as f:
        runner = HTMLTestRunner(stream=f,title="Test Report"+"_Baidu",description="TestCase Result")
        runner.run(discover)    # 执行测试用例

    f.close()   # 保存后关闭文件

执行结果:

[SP_10] 单元测试(UnitTest)之Web测试应用实战、测试报告生成_第3张图片
执行脚本后生成的测试报告

[SP_10] 单元测试(UnitTest)之Web测试应用实战、测试报告生成_第4张图片
测试报告打开的样式


三、测试报告颜值优化

下载传送门:https://github.com/easonhan007/HTMLTestRunner

PS:对于Python3.x环境,下载后的文件BSTestRunner.py也需要作第二步测试报告生成中一样的修改,同样修改好的文件放置在Python安装路径的Lib目录下

新建runtest_Report_BS.py

import unittest
from BSTestRunner import BSTestRunner
import time

# 定义测试用例的路径
test_dir = "./TestCase"
discover = unittest.defaultTestLoader.discover(test_dir,pattern="test*.py")

if __name__ == '__main__':
    report_dir = "./TestReport" # 定义存放报告的路径
    now = time.strftime("%y-%m-%d %H_%M_%S")    # 对报告的时间命名格式化
    report_name = report_dir+'/'+now+"_result.html"  # 报告文件的完整路径

    # 打开文件,在报告文件写入测试结果
    with open(report_name,'wb') as f:
        runner = BSTestRunner(stream=f,title="Test Report"+"_Baidu",description="TestCase Result")
        runner.run(discover)    # 执行测试用例

    f.close()   # 保存后关闭文件

执行结果:

[SP_10] 单元测试(UnitTest)之Web测试应用实战、测试报告生成_第5张图片
美颜后的测试报告

你可能感兴趣的:([SP_10] 单元测试(UnitTest)之Web测试应用实战、测试报告生成)