-
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
