unittest框架学习笔记
生活随笔
收集整理的這篇文章主要介紹了
unittest框架学习笔记
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
目錄
- 1、unittest全部屬性
- 2、用例基本類:unittest.TestCase
- 2.1、前置條件:setUp()
- 2.2、后置條件:tearDown()
- 2.3、斷言:assert*()
- 3、單元測試:unittest.main()
- 4、用例套件_1:unittest.TestSuite()
- 5、用例套件_2:unittest.defaultTestLoader()
- 6、執(zhí)行套件:unittest.TextTextRunner()
- 7、裝飾器:unittest.skip()
- 8、裝飾器:@classmethod
- 9、數(shù)據(jù)驅動:ddt
- 10、生成測試報告:HTMLTestRunner
- 11、截圖
1、unittest全部屬性
['BaseTestSuite', 'FunctionTestCase', 'SkipTest', 'TestCase', 'TestLoader', 'TestProgram', 'TestResult', 'TestSuite', 'TextTestResult', 'TextTestRunner', '_TextTestResult', '__all__', '__builtins__', '__doc__', '__file__', '__name__', '__package__', '__path__', '__unittest', 'case', 'defaultTestLoader', 'expectedFailure', 'findTestCases', 'getTestCaseNames', 'installHandler', 'loader', 'main', 'makeSuite', 'registerResult', 'removeHandler', 'removeResult', 'result', 'runner', 'signals', 'skip', 'skipIf', 'skipUnless', 'suite', 'util']2、用例基本類:unittest.TestCase
TestCase類,所有測試用例類繼承的基本類。使用方法:class BaiduTest(unittest.TestCase):pass2.1、前置條件:setUp()
- 用于測試用例執(zhí)行前的初始化工作。
- 如:連接數(shù)據(jù)庫、初始化瀏覽器等。
2.2、后置條件:tearDown()
- 用于測試用例執(zhí)行之后的善后工作。
- 如:關閉數(shù)據(jù)庫、關閉瀏覽器之內(nèi)的。
2.3、斷言:assert*()
- assert*():一些斷言方法:在執(zhí)行測試用例的過程中,最終用例是否執(zhí)行通過,是通過判斷測試得到的實際結果和預期結果是否相等決定的。
3、單元測試:unittest.main()
【1】作用:可以運行單個測試用例檢查用例是否正確,單元測試。【2】執(zhí)行條件:執(zhí)行的時候會自動搜索模塊中以“test”命名開頭的測試方法。【3】執(zhí)行默認順序: 1、根據(jù)ASCII碼的順序加載測試用例。 2、數(shù)字與字母的順序為:0-9,A-Z,a-z。 3、所以A開頭的測試用例方法會優(yōu)先執(zhí)行,以a開頭會后執(zhí)行。【4】使用方法:import unittestclass Test(unittest.TestCase):def setUp(self):print('start')def test_01(self):print('test_01')def test_02(self):print('test_02')def tearDown(self):print('end')if __name__ == '__main__':unittest.main()# 執(zhí)行順序:setUp() -> test_01() -> tearDown() -> setUp() -> test_01() -> tearDown()#完整流程即 [前置 -> 用例 -> 后置]這樣一個循環(huán)反復的順序。4、用例套件_1:unittest.TestSuite()
- unittest框架的TestSuite()類是用來創(chuàng)建測試套件的。
addTest():
- addTest()方法是將測試用例添加到測試套件中。
5、用例套件_2:unittest.defaultTestLoader()
- unittest框架的defaultTestLoader()類,通過該類下面的discover()方法可根據(jù)測試目錄匹配查找測試用例文件(test*.py),并將查找到的測試用例組裝到測試套件,因此可以直接通過run()方法執(zhí)行discover。用法如下:
備注:discover方法里面有三個參數(shù)
-case_dir:這個是待執(zhí)行用例的目錄。
-pattern:這個是匹配腳本名稱的規(guī)則,test*.py意思是匹配test開頭的所有腳本。
-top_level_dir:這個是頂層目錄的名稱,一般默認等于None就行了。
6、執(zhí)行套件:unittest.TextTextRunner()
- unittest框架的TextTextRunner()類,配合TestSuite()、defaultTestLoader()類一起使用,通過TextTextRunner類下面的run()方法來運行套件所組裝的測試用例,入?yún)閟uite測試套件。
7、裝飾器:unittest.skip()
- unittest.skip():裝飾器,當運行用例時,有些用例可能不想執(zhí)行等,可用裝飾器暫時屏蔽該條測試用例。
8、裝飾器:@classmethod
- 作用:在某些特定情況下,避免每次執(zhí)行用例時候都會執(zhí)行一次unittest里面setUp()。
- 比如進行登陸、打開瀏覽器、連接數(shù)據(jù)庫等操作的時候。
9、數(shù)據(jù)驅動:ddt
【1】作用:
- 針對某些功能相同,但是輸入的參數(shù)數(shù)據(jù)不同時,可以使用數(shù)據(jù)驅動設計的模式,一組數(shù)據(jù)對應一個測試用例,用例自動加載生成,有效的較少代碼量。如:登錄時。
【2】安裝ddt模塊
pip install ddt【3】ddt模塊使用方法
10、生成測試報告:HTMLTestRunner
【1】安裝HTMLTestRunner
1.HTMLTestRunner這個模塊下載不能通過pip安裝了,只能下載后手動導入,下載地址:http://tungwaiyip.info/software/HTMLTestRunner.html
- 2.Download下HTMLTestRunner.py文件就是我們需要下載的包。
3.下載后手動拖到python安裝文件的Lib目錄下
【2】使用方法:
···· ·····if __name__ == '__main__':#將測試用例加入到套件中suite = unittest.TestSuite()suite.addTest(Test('test_01'))suite.addTest(Test('test_02'))# 獲取當前時間,這樣便于下面的使用。now = time.strftime("%Y-%m-%M-%H_%M_%S", time.localtime(time.time())) + '.html'# filePath:測試報告保存的路徑filePath = os.path.join(os.getcwd(), 'report', now)fp = open(filePath, 'wb')# 測試報告的title、描述runner = HTMLTestRunner.HTMLTestRunner(stream=fp,title='自動化測試HTML文件標題',description='自動化測試HTML文件描述')runner.run(suite)# 最后記著關閉文件fp.close()11、截圖
在測試過程中,用的最多的就是截圖功能,畢竟有圖有真相嘛,截圖不僅可以把缺陷原原本本的記錄下來,也方便后面我們根據(jù)缺陷。
webdriver中提供的截圖方法一:
- get_screenshot_as_file(filename)
- 這個方法是獲取當前window的截圖,出現(xiàn)IOError時候返回False,截圖成功返回True。
- filename參數(shù)是保存文件的路徑。
方法二:
- get_screenshot_as_base64()
- 這個方法也是獲取屏幕截圖,保存的是base64的編碼格式,在HTML界面輸出截圖的時候,會用到。
方法三:
- get_screenshot_as_png()
- 這個是獲取屏幕截圖,保存的是二進制數(shù)據(jù)。
轉載于:https://www.cnblogs.com/jasontang369/p/9568979.html
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的unittest框架学习笔记的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 因为有你旅途更美好
- 下一篇: python中的浅拷贝与深拷贝——cop