單元測試報告的生成HTMLTestRunner

第三步html

1.把單元測試腳本插入斷言web

2.生成測試報告框架

import unittest
from API_AUTO.UnitTest import HTMLTestRunnerNew
#import HTMLTestRunnerNew #更新的測試報告模板
from API_AUTO.UnitTest.Practice_UnitTest import TestMathMethod

suite=unittest.TestSuite()#存儲用例
#way1 只執行一條測試用例,少許測試用例適用
suite.addTest(TestMathMethod('test_add_two_zero'))
suite.addTest(TestMathMethod('test_add_two_positive'))
#way2 TestLoader,使用批量成千上百條測試用例的執行
loader=unittest.TestLoader()#建立一個加載器
#suite.addTest(loader.loadTestsFromTestCase(TestMathMethod))

from API_AUTO.UnitTest import Practice_UnitTest
suite.addTest(loader.loadTestsFromModule(Practice_UnitTest))

#執行 上下文管理器
#file=open("test.txt",'w+',encoding='UTF-8')
# with open("test.txt",'w+',encoding='UTF-8') as file:
# runner=unittest.TextTestRunner(stream=file,verbosity=2) #verbosity =0,1,2,2是最詳細的
# runner.run(suite)
# # file.close()
# print(file.closed) #判斷file是否關閉
#使用htmltestRunner
with open("test_report.html",'wb') as file:
runner=HTMLTestRunnerNew.HTMLTestRunner(stream=file,
verbosity=2,
title='My unit test_小肥羊',
description='小肥羊的第一個單元測試報告.',
tester="小肥羊")
runner.run(suite)


------------

第一步寫的單元測試的腳本-開發寫的
class MathMethod:
def __init__(self,a,b):
self.a=a
self.b=b

def add(self):
return self.a+self.b

def multi(self):
return self*self.b






------------
第二步驟: 進行單元測試編寫的腳本-測試寫的
#接口測試的本質:測試類的函數,類裏主要封裝函數和屬性,測試別人寫好的代碼,經過數據驅動測試#單元測試的本質:測試函數 經過代碼測試#單元測試的框架 unittest+API(接口),pytest+web#功能測試步驟-unittest能夠實現以下步驟#1.寫用例 Testcase#2.執行用例 2個方法 1:TestSuite 存儲用例 2.TestLoader 找用例-》 加載用例 -》存儲到TestSuite#3.對比實際結果 指望結果 斷定用例是否經過 斷言#4.出具測試報告 TestRunnerimport unittestfrom API_AUTO.UnitTest.Math_Method import MathMethod#編寫3個測試用例以下:1+1/0+1/-1+(-2)#寫一個測試類,對D:\PycharmProject\Test\API_AUTO\UnitTest\Math_Method.py這個文件裏模塊的類進行單元測試class TestMathMethod(unittest.TestCase): #繼承unittest裏的testcase,用來編寫測試用例    #編寫測試用例    #1.一個函數就是一個測試用例,不能傳參,只有self關鍵字    #2.全部用例都是test開頭,按照ascii碼執行順序    def test_add_two_positive(self):  # test method names begin with 'test'        res=MathMethod(1,1).add() #建立實例        print("1+1的結果是: ",res)        try:            self.assertEqual(2,res,"計算結果出錯!")        except AssertionError as e:            print("出錯了,斷言結果是{0}".format(e))            raise e #異常處理後拋出去    def test_add_two_zero(self):  # test method names begin with 'test'        res=MathMethod(0,0).add() #建立實例        print("0+0的結果是: ",res)        try:            self.assertEqual(0,res,"計算結果出錯!")        except AssertionError as e:            print("出錯了,斷言結果是{0}".format(e))            raise e    def test_add_two_negative(self):  # test method names begin with 'test'        res=MathMethod(-1,-2).add() #建立實例        print("-1+(-2)的結果是: ",res)        try:            self.assertEqual(-33,res,"計算結果出錯!")        except AssertionError as e:            print("出錯了,斷言結果是{0}".format(e))            raise eclass TestMultiMethod(unittest.TestCase): #繼承unittest裏的testcase,用來編寫測試用例    #編寫測試用例    #1.一個函數就是一個測試用例,不能傳參,只有self關鍵字    #2.全部用例都是test開頭,按照ascii碼執行順序    def test_multi_two_positive(self):  # test method names begin with 'test'        res=MathMethod(1,1).add() #建立實例        print("1*1的結果是: ",res)        try:            self.assertEqual(1,res,"計算結果出錯!")        except AssertionError as e:            print("出錯了,斷言結果是{0}".format(e))            raise e    def test_multi_two_zero(self):  # test method names begin with 'test'        res=MathMethod(0,0).add() #建立實例        print("0*0的結果是: ",res)        try:            self.assertEqual(0,res,"計算結果出錯!")        except AssertionError as e:            print("出錯了,斷言結果是{0}".format(e))            raise e    def test_multi_two_negative(self):  # test method names begin with 'test'        res=MathMethod(-1,-2).add() #建立實例        print("-1*(-2)的結果是: ",res)        try:            self.assertEqual(22,res,"計算結果出錯!")        except AssertionError as e:            print("出錯了,斷言結果是{0}".format(e))            raise eif __name__ == '__main__':        unittest.main()
相關文章
相關標籤/搜索