1. 程式人生 > >Python使用unittest測試框架進行自動化測試

Python使用unittest測試框架進行自動化測試

目錄

背景

APP端隨著版本升級,對應的服務端介面也會增加或修改,為了驗證新版本是否影響老版本的介面邏輯和功能,可使用自動化測試進行老版本介面迴歸。

介面特點

經分析專案介面包含公共引數和可選引數兩部分:

  1. 公共引數 ,所有的介面都會傳遞的引數;
  2. 可選引數 ,不同介面會有自己獨有的引數;

測試指令碼設計

  1. 專案類 – MyProject() ,管理專案下所有介面方法;
  2. 測試用例類 – MyTestCase() ,管理介面方法對應的測試用例;
  3. 測試集 – suite() ,收集本次即將測試的用例(可按照用例新增順序執行)
  4. 主函式 ,採用HTMLTestRunner3
    (HTMLTestRunner適配Python3版本)

指令碼樣例

import unittest
import HTMLTestRunner3


class MyProject(object):
    """MyProject包含3條測試用例,擁有公共引數arg,以及可選引數*arg"""
    def __init__(self, arg, *args):        
        super(MyProject, self).__init__()
        self.arg = arg

    def t_001_create_exam(self):
        ret1 =
self.arg + '1' return ret1 def t_002_bind_exam(self): ret2 = self.arg + '2' return ret2 def t_003_upload_exam(self): ret3 = self.arg + '3' return ret3 class MyTestCase(unittest.TestCase): """MyTestCase繼承unittest.TestCase,3個測試用例需以test開頭""" # 執行用例前執行,僅執行一次
@classmethod def setUpClass(cls): cls.param = 'test' cls.param1 = '1' cls.param2 = '2' cls.param3 = '33' #改為3時test_003結果為pass cls.myobj = MyProject(cls.param, (cls.param1, cls.param2, cls.param3) ) # 執行每個用例前執行 def setUp(self): pass # 執行每個用例後執行tearDown方法,恢復測試環境 def tearDown(self): pass def test_001(self): ret = self.myobj.t_001_create_exam() self.assertEqual(ret, self.param + self.param1) def test_002(self): ret = self.myobj.t_002_bind_exam() self.assertEqual(ret, self.param + self.param2) def test_003(self): ret = self.myobj.t_003_upload_exam() self.assertEqual(ret, self.param + self.param3) # suite()函式收集待測試的用例 def suite(): suite = unittest.TestSuite() suite.addTest(MyTestCase('test_001')) suite.addTest(MyTestCase('test_002')) suite.addTest(MyTestCase('test_003')) return suite if __name__ == '__main__': file_path = 'TestReport.html' with open(file_path, 'wb') as fp: runner = HTMLTestRunner3.HTMLTestRunner( stream=fp, title='自動化測試報告', description='迴歸測試', verbosity=2 ) runner.run(suite())

指令碼執行

  1. 可在IDE執行指令碼,比如PyCharm, Sublime Text 3
  2. 可在命令列視窗執行,如下圖:
    在這裡插入圖片描述

t_long_case.py為指令碼名稱

測試報告

在這裡插入圖片描述

參考