本文的主要結構
第一部分:UnitTest簡介
第二部分:基本概念的介紹
第三部分:各個概念詳解
第四部分:程序的運行
第五部分:測試報告的輸出
UnitTest是Python自帶的測試框架,主要適用於單元測試,並對多個測試用例進行管理和封裝。
(一)測試用例-testcase
測試用例是測試框架最底層的內容(類似,磚是房子最基本的東西)
每一條用例的設計,和功能用例一樣,可以盡量包含多個測試點
(二)測試固件-testfixture
測試固件=固定的測試代碼(即:測試代碼中相同的部分)
eg:測試一個接口,接口地址可以通過setup()進行初始化,然後各個測試用例直接調用初始化的接口地址就可以了
例如通過teardown()來結束測試工作。
(三)測試套件-testsuit
測試套件吧多個測試用例集合在一起,可以理解為測試用例的集合。
(四)測試運行器-testrunner
測試運行器是給測試用例提供運行環境的,通過它的run()方法來執行測試用例,並在執行完後將測試結果輸出。
導入Unittest模塊;
定義一個測試類(繼承unittest.TestCase基類),一個測試用例封裝到一個函數中
一個測試類中可以包含多個測試用例。
將重復的代碼放在一起,
起到的作用:減少冗余代碼;便於後期代碼維護
例如上面的登錄檢查,每個用例中都使用到url,
我們可以通過setup()將url進行初始化
r = requests.post(self.url, json=form)
message = r.json()["message"]
self.assertEqual(message, "成功!")
setUp函數是測試用例的公共部分,類似一個全局變量,供其他函數調用,其他函數不用再重復定義,直接通過變量self.url調用。
測試套件主要用來添加測試用例,添加用例的方式,本文主要介紹三種:
1.通過TestSuite()添加用例
def suite():
""" 定義suit()函數,用來返回已經創建好的測試套件實例 :return: """
#調用TestSuite()函數生成一個測試套件實例
suite = unittest.TestSuite()
#使用addTest方法添加單個測試用例
suite.addTest(testSet0Setup("test_set0_0"))
# 使用addTests方法添加多個測試用例
suite.addTests([testSet0Setup("test_set0_1"),testSet0Setup("test_set0_2"),testSet0Setup("test_set0_3")])
return suite
運行代碼
if __name__ =="__main__":
#構建一個運行器對象
runner = unittest.TextTestRunner()
#run()調用suite()構建的測試用例
runner.run(suite())
通過addTest添加用例,適合測試用例比較少的情況,如果用例比較多,可以考慮其他方式。
2.通過makeSuite()添加用例
def suite():
#makeSuite()可以直接表明某個類下面,用例名已test開頭的測試用例添加到測試套件中
suite =unittest.makeSuite(testSet0Setup,"test")
return suite
makeSuite(testSet0Setup,“test”)將testSet0Setup中所有以“test”開頭的測試用例添加到測試套件中
顯然:一行代碼就可以添加所有符合要求的用例
但是:不靈活,只能添加全部
測試用例可以分別從多個文件中取,然後通過TestSuite(suite0,suite1)將多個套件合成一個測試套件實例
def suite():
suite0 =unittest.makeSuite(testSet0Setup,"test")
suite1 = unittest.makeSuite(testSet0, "test")
suite = unittest.TestSuite(suite0,suite1)
return suite
3.通過defaultTestLoader.discover()添加測試覆蓋范圍
方式一:
runner = unittest.TextTestRunner()
#run()調用suite()構建的測試用例
runner.run(suite())
方式二:還可以將所有操作都封裝到一個main(),運行unittest.main()即可
unittest測試框架是python內置的框架,但是並沒有測試報告輸出,需要下載導入一個第三方模塊HTMLTestRunner,以HTML形式存放測試結果,並會以報告的形式保存。
HTMLTestRunner擴展模塊無法通過pip進行安裝,下載地址如下:
http://tungwaiyip.info/software/HTMLTestRunner.html
將py文件放到python安裝的目錄ilb文件夾下面,由於是基於python2開發,為兼容python3語法,需要將文件進行如下修改:
我使用的HTMLTestRunner文件鏈接如下
鏈接: https://pan.baidu.com/s/1vHjiHqaqJkeUWKMl6mwy1g 提取碼: mqen
if __name__ == "__main__":
filepath = "./htmlreport.html"
fp = open(filepath,"wb")
suite = unittest.TestSuite()
suite.addTest(TestAssert("testAssertIn"))
runner = HTMLTestRunner(stream= fp,title= "測試報告",description="期待成功哈")
runner.run(suite)
fp.close()
運行文件可以生成如下報告:
在生成測試報告部分時,遇到不可以生成測試報告的情況,具體解決方法可參考如下文章:
https://blog.csdn.net/qq_44801116/article/details/125444133?spm=1001.2014.3001.5501