本文主要阐述了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) #启动容器