⼀、
安装Python的时候,就默认安装了Unittest,所以直接import使⽤就可以1. Unittest初体验
# -*-coding:UTF:8-*-import unittest
class TestMethod(unittest.TestCase): #每次⽅法之前执⾏ def setUp(self):
print('test-->setup') #每次⽅法之后执⾏ def tearDown(self):
print('test---->tearDown')
def test_001(self): # unittest中的⽤例必须以test开头 print('这个是第⼀个测试⽅法') def test_002(self):
print('这个是第⼆个测试⽅法')if __name__ == '__main__': unittest.main()
运⾏结果:
2. 加⼊类⽅法
类⽅法是整个测试只执⾏⼀遍
# -*-coding:UTF:8-*-import unittest
class TestMethod(unittest.TestCase):
@classmethod
def setUpClass(cls): #类⽅法,整个测试只会执⾏⼀次 print(\"类执⾏之前的⽅法\") @classmethod
def tearDownClass(cls): print(\"类执⾏之后的⽅法\") #每次⽅法之前执⾏ def setUp(self):
print('test-->setup') #每次⽅法之后执⾏ def tearDown(self):
print('test---->tearDown') def test_001(self):
print('这个是第⼀个测试⽅法') def test_002(self):
print('这个是第⼆个测试⽅法')if __name__ == '__main__': unittest.main()
运⾏结果:
⼆、实际应⽤
1. 把Setup()运⽤在实际测试中
#coding:utf-8
import unittest
from TestDemo_No_init import RunMainimport json
class TestMethod(unittest.TestCase):
def setUp(self):
self.run = RunMain()
def test01(self):
url = 'http://127.0.0.1:8000/login/' data = {
'username': 'Jessie', 'password': '123456' }
r = self.run.run_main(url, 'POST', data) print(r)
re = json.dumps(r, indent=2, sort_keys=False, ensure_ascii=False) print(re)
def test02(self):
url = 'http://fanyi.youdao.com/translate' data = {
'doctype': 'json', 'type': 'AUTO', 'i': 'weather' }
r = self.run.run_main(url, 'GET', data) print(r)
re = json.dumps(r, indent=2, sort_keys=False, ensure_ascii=False) print(re)
@unittest.skip('test03') # 跳过test03 def test03(self):
url = 'http://fanyi.youdao.com/translate' data = {
'doctype': 'json', 'type': 'AUTO', 'i': '天⽓' }
r = self.run.run_main(url, 'GET', data) print(r)
re = json.dumps(r, indent=2, sort_keys=False, ensure_ascii=False)
if __name__ == '__main__': unittest.main()
运⾏结果:
可以对⽐下有json.loads()转化后,输出的格式,更容易查看了
2. 加⼊结果⽐对验证
assertEqual() 来检查预期的输出。具体为:⽐较第⼀个参数值和第⼆个参数值,如果相等则通过。如果不相等,则输出第三个参数的信息assertTrue() 或 assertFalse() 来验证⼀个条件assertRaises() 来验证抛出了⼀个特定的异常
#coding:utf-8
import unittest
from TestDemo_No_init import RunMainimport json
class TestMethod(unittest.TestCase):
def setUp(self):
self.run = RunMain()
def test01(self):
\"\"\"这是⼀个POST的接⼝⾃动化测试\"\"\" url = 'http://127.0.0.1:8000/login/' data = {
'username': 'Jessie', 'password': '123456' }
r = self.run.run_main(url, 'POST', data) # print(r)
re = json.dumps(r, indent=2, sort_keys=False, ensure_ascii=False) print(re)
re_new = json.loads(re)
self.assertEqual(re_new['user'], 'Jessie', '测试失败') # globals()['userid'] = 66666
def test02(self):
\"\"\"查询翻译词的接⼝\"\"\" # print(userid)
url = 'http://fanyi.youdao.com/translate' data = {
'doctype': 'json', 'type': 'AUTO', 'i': 'weather' }
r = self.run.run_main(url, 'GET', data) # print(r)
# print(type(r))
re = json.dumps(r, indent=2, sort_keys=False, ensure_ascii=False) print(re)
# print(type(re))
re_new = json.loads(re) # print(type(re_new))
self.assertEqual(re_new['errorCode'], 0, '测试失败') #检查预期结果 @unittest.skip('test03') # 跳过test03 def test03(self):
url = 'http://fanyi.youdao.com/translate' data = {
'doctype': 'json', 'type': 'AUTO', 'i': '天⽓' }
r = self.run.run_main(url, 'GET', data) print(r)
re = json.dumps(r, indent=2, sort_keys=False, ensure_ascii=False) re_new = json.loads(re)
self.assertEqual(re_new['errorCode'], 0, '测试失败') #检查预期结果
if __name__ == '__main__': unittest.main()
运⾏结果:
如果把test02的这个地⽅改⼀下,故意制造个错误
看下运⾏结果:
打印的提⽰信息⾮常明显了
三、 case的管理运⽤1.
#coding:utf-8
import unittest
from TestDemo_No_init import RunMainimport json
class TestMethod(unittest.TestCase):
def setUp(self):
self.run = RunMain()
def test01(self):
url = 'http://127.0.0.1:8000/login/' data = {
'username': 'Jessie', 'password': '123456' }
r = self.run.run_main(url, 'POST', data) print(r)
re = json.dumps(r, indent=2, sort_keys=False, ensure_ascii=False)
re_new = json.loads(re)
self.assertEqual(re_new['user'], 'Jessie', '测试失败') # globals()['userid'] = 66666 #全局变量
def test02(self): # print(userid)
url = 'http://fanyi.youdao.com/translate' data = {
'doctype': 'json', 'type': 'AUTO', 'i': 'weather' }
r = self.run.run_main(url, 'GET', data) print(r)
re = json.dumps(r, indent=2, sort_keys=False, ensure_ascii=False) re_new = json.loads(re)
self.assertEqual(re_new['errorCode'], 0, '测试失败')
@unittest.skip('test03') # 跳过test03 def test03(self):
url = 'http://fanyi.youdao.com/translate' data = {
'doctype': 'json', 'type': 'AUTO', 'i': '天⽓' }
r = self.run.run_main(url, 'GET', data) print(r)
re = json.dumps(r, indent=2, sort_keys=False, ensure_ascii=False) re_new = json.loads(re)
self.assertEqual(re_new['errorCode'], 0, '测试失败')
if __name__ == '__main__':
suite = unittest.TestSuite() #创建放case的容器 suite.addTest(TestMethod('test01')) #添加case suite.addTest(TestMethod('test02')) suite.addTest(TestMethod('test03')) runner = unittest.TextTestRunner() runner.run(suite)
运⾏结果:
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- dfix.cn 版权所有 湘ICP备2024080961号-1
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务