python unittest庫的入門學習


  1. unittest的基本概念

  2. 創建測試用例類
  3. 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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM