測試報告原理 Export Test Results工具使用 自動化測試登錄頁面 HTML TestRunner實現自動化測試 自動監測並生成測試報告案例

在使用自動化測試登錄頁面前,先學習一下理論。什麼是HTML測試報告?爲什麼要生成測試報告?以及生成測試報告的方式。

一、什麼是HTML測試報告

概念:HTML測試報告就是執行完測試用例後以HTML(網頁)方式將執行結果生成報告。


二、爲什麼要生成測試報告

  1. 測試報告是本次測試目的最終體現形態
  2. 測試報告內包含了由本次測試用例的詳情

三、HTML生成報告的方式

  1. Export Test Results (UnitTest自帶的)
  2. HTML TestRunner(Python 標準庫單元測試模塊的擴展)

四、Export Test Results的使用

當我們在使用UnitTest庫的時候,運行代碼,會自動調用Export Test Results插件:
代碼

import unittest

def add(x, y):
    return x+y
    
class TestCase_01(unittest.TestCase):
    def test_01(self):
        # 斷言相等,arg1等於arg2實際結果
        self.assertEqual(2, add(1, 1))
        
    def test_02(self):
        # 斷言arg1是arg2的子串,如果不是返回fail
        self.assertIn("ac","abcdefg")
            
if __name__ == '__main__':
    unittest.main()

Export Test Results工具使用在這裏插入圖片描述
測試報告截圖,如下:
在這裏插入圖片描述


五、HTML TestRunner的使用(日常使用重點)

HTML TestRunner 是 Python 標準庫單元測試模塊的擴展。它生成易於使用的 HTML 測試報告
爲什麼說它是日常使用的重點呢?既然是自動化測試,那麼你在運行之後再點一下是什麼鬼?如果有一百個用例文件需要測試呢?點一百次?這是不符合日常使用的。所以,Python封裝了一個單元測試模塊的擴展HTML TestRunner,易於使用的 HTML 測試報告。

  1. HTML TestRunner下載
    python2版下載地址:http://tungwaiyip.info/software/HTMLTestRunner.html,首先要下 HTMLTestRunner.py 文件,將下載的文件放入…\python\Lib目錄下)。
    python3版下載地址鏈接:https://pan.baidu.com/s/1prHP_QwcRCnWoQnL3kb0aw ,提取碼:dcnp ,因爲我是python3版本,而在使用過程中,我是直接調用的,並沒有放入…\python\Lib目錄下)。

  2. 創建一個cases文件夾,在文件內創建兩個用例(將下代碼複製兩份即可):
    代碼

import unittest

def add(x, y):
    return x+y

class TestCase_01(unittest.TestCase):
    def test_01(self):
        # 斷言相等,arg1等於arg2實際結果
        self.assertEqual(2, add(1, 1))

    def test_02(self):
        self.assertIn("ac","abcdefg")

    def test_03(self):
        # 斷言相等,arg1等於arg2實際結果
        self.assertEqual(3, add(1, 1))
  1. 創建一個".py",調用HTML TestRunner文件,代碼如下:
    注意點:因爲我HTMLTestRunner.py放在tool文件下,使用".tools.HTMLTestRunner"調用時,加".“有歧義會報錯,所以在運行之前可以保留”.",還能有提示,在運行時刪除,就不會報錯
# 調用unittest模塊
import unittest
# 因爲我HTMLTestRunner.py放在tool文件下,使用".tools.HTMLTestRunner"調用時,
# 加"."有歧義會報錯,所以在運行之前可以保留".",還能有提示,在運行時刪除,就不會報錯
from tools.HTMLTestRunner import HTMLTestRunner

# defaultTestLoader搜索cases目錄下所有py文件,*表示匹配所有文件
suite = unittest.defaultTestLoader.discover("./cases", pattern="*.py")

with open("./reports/測試報告.html", "wb") as f:
    runner = HTMLTestRunner(stream=f,title="測試報告",description="測試用例")
    runner.run(suite)
  1. 運行結果,保存,在瀏覽器中打開
    在這裏插入圖片描述

六、使用HTML TestRunner實現自動化測試,並輸出測試報告

  1. 先作準備工作,創建login文件夾,在login文件夾下分別創建reports、image、tools文件夾,reports存放測試報告,image存放每個實例的截圖(爲減少扯淡保存證據),tools存放HTML TestRunner.py文件。
    在這裏插入圖片描述
  2. 先編寫自動化測試腳本代碼login.py文件:
    代碼如下:
from selenium import webdriver
import unittest
import time


# 以參數的形式傳入瀏覽器、用戶名、密碼
def iwebshop_login_test(driver=None, username=None, password=None):
    # 測試網址
    driver.get("http://127.0.0.1:8088/iwebshop")
    # 搜索“登錄”,點擊
    driver.find_element_by_link_text("登錄").click()
    driver.implicitiy_wait(5)
    # 以name屬性定位用戶名,輸入值
    driver.find_element_by_name("login_info").send_keys(username)
    # 以name屬性定位密碼,輸入值
    driver.find_element_by_name("password").send_keys(password)
    # 點擊class_name屬性,對應的是登錄
    driver.find_element_by_class_name("submit_login").click()
    # 暫停1秒
    time.sleep(1)
    # 截圖,保存到image
    driver.save_screenshot("./image/" + username + password + "登錄.png")
    return driver.find_element_by_class_name("loginfo").test


# 下面爲測試用例,每個實例修改用戶名和密碼即可
class TestCase_01(unittest.TestCase):
    def test_login01(self):
        # 定義瀏覽器
        self.driver = webdriver.Chrome()
        # 用戶名爲zhangsan
        username = "zhangsan"
        # 斷言arg1是arg2的子串
        self.assertIn(username, iwebshop_login_test(self.driver, username, "123123"))
        # 退出
        self.driver.quit()
        
    def test_login02(self):
        # 定義瀏覽器
        self.driver = webdriver.Chrome()
        # 用戶名爲lisi
        username = "lisi"
        # 斷言arg1是arg2的子串
        self.assertIn(username, iwebshop_login_test(self.driver, username, "123123"))
        # 退出
        self.driver.quit()
        
    def test_login03(self):
        # 定義瀏覽器
        self.driver = webdriver.Chrome()
        # 用戶名爲lisi
        username = "zhangsan1"
        # 斷言arg1是arg2的子串
        self.assertIn(username, iwebshop_login_test(self.driver, username, "1123123"))
        # 退出
        self.driver.quit()
  1. 編寫測試報告生成腳本文件HTML_TestRunner.py,代碼如下:
    代碼
import unittest
from .tools.HTMLTestRunner import HTMLTestRunner
from .login import TestCase_01

suite = unittest.TestSuite()
suite.addTest(unittest.makeSuite(TestCase_01))

with open("./reports/登錄測試.html", "wb") as f:
    runner = HTMLTestRunner(stream=f, title="iwebshop登錄測試", description="iwebshop登錄是否成功的測試")
    runner.run(suite)
  1. 運行結果,保存,在瀏覽器中打開查看:
    a. 運行腳本,實例的截圖:
    在這裏插入圖片描述
    b. 測試報告截圖,zhangsan1實例失敗,如下:
    在這裏插入圖片描述

七、最後

自動化腳本在工作中可以幫助測試人員節省很多的時間和精力,代碼相當簡單,假設我們有一百個用例需要測試,複製粘貼就完事了,運行最多幾分鐘就ok。最後,你們學會了嗎?
注:文中部分描述可能出現實例和用例兩種叫法,其實是一樣的,在Python中可以叫實例,而在測試中叫用例。

發佈了56 篇原創文章 · 獲贊 73 · 訪問量 2878
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章