本文主要闡述了unittest 中的 TestSuite容器、assert斷言、裝飾器@unittest.skip的用法
import requests
import json
class RunMain:
def __init__(self):
#self.run_main(url,method,data=None)
pass
def send_get(self,url,data=None):
print(data)
res = requests.get(url=url,data=data).text
print('res=%s'%res,type(res))
return res
def send_post(self,url,data=None):
res = requests.post(url=url,data=data).text
res = json.loads(res)
#上面兩句可以合併爲一句 res = requests.post(url=url, data=data).json()
# return json.dumps(res, indent=2, sort_keys=True) #字典轉字符串序列化可以這麼寫
return res
def run_main(self,url,method,data=None):
if method == 'GET':
res = self.send_get(url,data)
else:
res = self.send_post(url,data)
return res
if __name__ == '__main__':
url = 'http://127.0.0.1:8001/login/'
data = {
'username':'jonathantfff',
'password':'jack666666',
}
rm = RunMain().run_main(url,'POST',data=data)
import unittest
class TestMethod(unittest.TestCase):
#每次方法之前執行,名字必須叫"setUpClass"
@classmethod
def setUpClass(cls):
print("類執行之前的方法")
#每次方法之前執行,名字必須叫"tearDownClass"
@classmethod
def tearDownClass(cls):
print("類執行之後的方法")
#每次方法之前執行,名字必須叫"tearDownClass"
def setUp(self):
print('setup ')
#每次方法之後執行,名字必須叫"tearDown"
def tearDown(self):
print('teardown ')
#測試方法必須以"test"開頭
def test_01(self):
print('this i test1')
def test_02(self):
print('this i test2')
if __name__ == '__main__':
unittest.main()
以上代碼爲上面兩片文章的獨立代碼,下面我們整合一下。**重要
import unittest
import port
class TestMethod(unittest.TestCase):
def setUp(self):
self.url = 'http://127.0.0.1:8001/login/'
self.data = {
'username':'jonathantfff',
'password':'jack666666',
}
self.run = Runmain()
def tearDown(self):
print('teardown ')
def test_01(self):
res = self.run.run_main(self.url,self.data)
self.assertEqual(res['code']=101) #斷言,斷言成功則跳過,否則報錯
globals()['code'] = res['code'] # globals()['code']定義全局變量(固定用法),這個全局變量可以給下一個測試的函數使用(集成測試)
def test_02(self):
print(code) #直接使用變量就可以返回定義的全局變量【使用的時候儘量減少依賴執行,unittest執行的時候是按照test後面的字母順序執行的】
#通過這種方式跳過 "test_03"這個測試
@unittest.skip('test_03')
def test_03(self):
print('這是測試的第三個case')
if __name__ == '__main__':
#unittest.main()
#那麼除了 "unittest"還有什麼方法可以啓動呢,unittest爲我們提供了一個容器
suite = unittest.TestSuite() #創建容易
suite = addTest(TestMethod('test_01')) #向容器內添加測試
suite = addTest(TestMethod('test_02'))
suite = addTest(TestMethod('test_03'))
unittest.TextTestRunner().run(suite) #啓動容器