-
unittest的基本概念
- 創建測試用例類
- unittest的使用示例
一、基本概念
Testcase是所有測試用例的基類
TestSuite是創建一個測試“容器”,可以往里面加case
TextTestRunner是運行測試用例
二、如何創建測試用例類
所有的用例類都需要繼承TestCase
測試用例中setUp和tearDown是每一個case開始和結束的時候都回執行的
測試用例必須以test開頭
還可以在用例類中定義類方法,setUpClass和tearDownClass,在每一個用例類的開始和結尾處都執行一遍。
import unittest #測試類必須要繼承unittest.TestCase class TestMethod(unittest.TestCase): @classmethod def setUpClass(cls): print('類執行之前') @classmethod def tearDownClass(cls): print('類結束之后') #每一個測試方法開始要執行的方法 def setUp(self): print("測試方法開始啦") #每一個測試方法結束后執行的方法 def tearDown(self): print("測試方法結束啦") #測試方法必須要以test開頭!!! def test01(self): print("這個是測試方法01") def test02(self): print("這個是測試方法02") if __name__=="__main__":
三、使用示例:
import unittest import json from demo import RunMain class TestMethod(unittest.TestCase): def setUp(self): self.run = RunMain() def test_01(self): data = { 'username':'nick', 'password':'123', 'errorCode':'1000' } url = "http://localhost:8000/login/" res = self.run.run_main(url, 'POST', data) #self.assertEqual(res['errorCode'],'1000',"測試成功") print(res) # 打印全局變量 #print(userid) #@unittest.skip('test_02') def test_02(self): # 全局變量 #globlas()['userid'] = '10000' data = { 'username':'nick', 'password':'123', 'errorCode':1001 } url = "http://localhost:8000/login/" res = self.run.run_main(url, 'POST', data) #self.assertEqual(res['errorCode'],'1001',"測試失敗") print(res) if __name__ == '__main__': #unittest.main() suite = unittest.TestSuite() suite.addTest(TestMethod('test_02')) suite.addTest(TestMethod('test_01')) unittest.TextTestRunner().run(suite)
globlas()['userid'] = '10000'是全局變量。比如第一個test的執行需要依賴第二個test,這時候就需要一個global,讓第二個test也可以訪問第一個test方法中的變量或者返回值
assertEqual是斷言
@unittest.skip這個裝飾器是用於過濾不需要執行的test
main方法中的unittest.main()是執行這個類中的所有代碼,如果只想只想部分test,可以先創建一個“容器”suite,再往里面addtest,最后執行容器
unittest.TextTestRunner().run(suite)
示例三:
import HTMLTestRunner import unittest class MyTest(unittest.TestCase):#繼承unittest.TestCase def tearDown(self): #每個測試用例執行之后做操作 print('111') def setUp(self): #每個測試用例執行之前做操作 print(22222) def test_run(self): # self.assertEqual(1,1) self.assertIs(1,1) #測試用例 def test_run2(self): # self.assertEqual(1,1) self.assertIs(1,1) #測試用例 def test_run3(self): # self.assertEqual(1,1) self.assertIs(1,1) #測試用例 def test_run1(self): # self.assertEqual(1,1) self.assertIs(1,1) #測試用例 if __name__ == '__main__': test_suite = unittest.TestSuite()#創建一個測試集合 test_suite.addTest(MyTest('test_run1'))#測試套件中添加測試用例 #test_suite.addTest(unittest.makeSuite(MyTest))#使用makeSuite方法添加所有的測試方法 fp = open('res.html','wb')#打開一個保存結果的html文件 runner = HTMLTestRunner.HTMLTestRunner(stream=fp,title='api測試報告',description='測試情況') #生成執行用例的對象 runner.run(test_suite) #執行測試套件
如果執行了之后無法生成測試報告,那就直接在命令行中執行這個py文件就行了,這個是pycharm的毛病。。。
可以參考:https://blog.csdn.net/xie_0723/article/details/50825310
更多uinttest的資料https://www.cnblogs.com/feng0815/p/8045850.html