一、單元測試、集成測試、功能測試
單元測試
顆粒度最小,一般由開發(fā)小組采用白盒方式來測試,主要測試單元是否符合“設(shè)計”;是指對軟件中的最小可測試單元進行檢查和驗證
集成測試
介于單元測試和系統(tǒng)測試之間,一般由開發(fā)小組采用白盒+黑盒的方法來測試,即驗證“設(shè)計”又驗證“需求”。主要用來測試模板與模板之間的接口,同時還要測試一些主要的業(yè)務(wù)功能。
功能測試
顆粒度最大,一般由獨立的測試小組采用黑盒的方式來測試,主要測試系統(tǒng)是否符合“需求規(guī)格說明書
白盒測試
主要應(yīng)用于單元測試階段,主要是對代碼級別的測試,針對程序內(nèi)部的邏輯結(jié)構(gòu)
黑盒測試
測試系統(tǒng)的功能是否滿足“需求規(guī)格說明書
二、Unittest重要組成
TestFixture
作用:用于一個測試環(huán)境的準(zhǔn)備和銷毀還原
功能:當(dāng)測試用例每次執(zhí)行之前需要準(zhǔn)備測試環(huán)境,每次測試完成后還原測試環(huán)境
主要方法:
setUp():準(zhǔn)備環(huán)境,執(zhí)行每個測試用例的前置條件;
tearDown():環(huán)境還原,執(zhí)行每個測試用例的后置條件;
setUpClass():必須使用@classmethod裝飾器,所有case執(zhí)行的前置條件,只運行一次;
tearDownClass():必須使用@classmethod裝飾器,所有case運行完后只運行一次;
TestCase:測試用例
定義:一個類class繼承 unittest.TestCase,就是一個測試用例
測試用例:就是一個完整的測試流程
包括測試前準(zhǔn)備環(huán)境的搭建(setUp),執(zhí)行測試代碼(run),以及測試后環(huán)境的還原(tearDown)
測試用例命名規(guī)則
測試方法的名稱要以test開頭。只會執(zhí)行以test開頭定義的方法
TestSuite:測試套件
可以將多個測試用例集合在一起,能一起執(zhí)行選中的測試用例
suite=unittest.TestSuite()#創(chuàng)建測試套件
case_list=[“test1”,”test2”….]
For caseincase_list:
?? suite.addTest(類名(case))
?? 案例:
if__name__=='__main__':
# unittest.main
suite=unittest.TestSuite()
caseList=["test001","test002"]
forcaseincaseList:
? ? ? ? ? ? ? ? ?? suite.addTest(UnitTestTwo(case))
# 運行測試用例
runner=unittest.TextTestRunner(verbosity=2)
? ? ? ? ? ? ?? runner.run(suite)
TextRunner:執(zhí)行測試用例
runner=unittest.TextTestRunner(verbosity=2)
runner.run(suite)
verbosity:表示測試報告信息的詳細(xì)程度,一共三個值,默認(rèn)是2
0(靜默模式):你只能獲得總的測試用例數(shù)和總的結(jié)果,如:總共100個失敗10成功90
1(默認(rèn)模式):類似靜默模式,只是在每個成功的用例前面有個.每個失敗的用例前面有個F
2(詳細(xì)模式):測試結(jié)果會顯示每個測試用例的所有相關(guān)的信息三
三、斷言
斷言:驗證預(yù)期結(jié)果和實際結(jié)果
assertEqual(a,b):斷言a和b是否相等,相等則測試用例通過。
assertNotEqual(a,b):斷言a和b是否相等,不相等則測試用例通過。
assertTrue(x):斷言x是否True,是True則測試用例通過。
assertFalse(x):斷言x是否False,是False則測試用例通過。
assertIs(a,b):斷言a是否是b,是則測試用例通過。
assertNotIs(a,b):斷言a是否是b,不是則測試用例通過。
assertIsNone(x):斷言x是否None,是None則測試用例通過。
assertIsNotNone(x):斷言x是否None,不是None則測試用例通過。
assertIn(a,b):斷言a是否在b中,在b中則測試用例通過。
assertNotIn(a,b):斷言a是否在b中,不在b中則測試用例通過。
assertIsInstance(a,b):斷言a是是b的一個實例,是則測試用例通過。
assertNotIsInstance(a,b):斷言a是是b的一個實例,不是則測試用例通過。
四.生成測試報告
過程:先創(chuàng)建開發(fā)和測試的包→拷貝開發(fā)代碼、對開發(fā)代碼測試→將HTMLTestRunner.py拷貝到項目中→進行生成測試報告
withopen("../report.html","wb")asf:
HTMLTestRunner(
stream=f,
title="單元測試",
description="測試一期",
verbosity=2
).run(suite)
stream:指定輸出的方式
description:報告中要顯示的面熟信息
title:測試報告的標(biāo)題
verbosity :表示測試報告信息的詳細(xì)程度,一共三個值,默認(rèn)是2
0 (靜默模式):你只能獲得總的測試用例數(shù)和總的結(jié)果,如:總共100個 失敗10 成功90
1 (默認(rèn)模式):類似靜默模式,只是在每個成功的用例前面有個. 每個失敗的用例前面有個F
2 (詳細(xì)模式):測試結(jié)果會顯示每個測試用例的所有相關(guān)的信息
五、讀取xml文件
創(chuàng)建xml文件→在xml文件中輸入數(shù)據(jù)→讀取
讀?。?/p>
fromxml.domimportminidom
classReadxml():
defread_xml(self,filename,onename,twoname):
root=minidom.parse(filename)
firstnode=root.getElementsByTagName(onename)[0]
secondnode=firstnode.getElementsByTagName(twoname)[0].firstChild.data
returnsecondnode
r=Readxml()
print(r.read_xml('../data/xmltestdata.xml','add','add3'))
六、讀取csv文件
創(chuàng)建一個csv文件→創(chuàng)建讀csv文件的文件→進行讀取
導(dǎo)入csv文件
importcsv#導(dǎo)入csv模塊
classReadCsv():
defread_csv(self):
item=[]#定義一個空列表
c=csv.reader(open("../commonDemo/test1.csv","r"))#得到csv文件對象
forcsv_iinc:
item.append(csv_i)#將獲取的數(shù)據(jù)添加到列表中
returnitem
r=ReadCsv()
print(r.read_csv())
十八單元 自動化持