您好,欢迎来到抵帆知识网。
搜索
您的当前位置:首页Python+Unittest接口自动化测试(二)---Unittest框架的使用

Python+Unittest接口自动化测试(二)---Unittest框架的使用

来源:抵帆知识网
Python+Unittest接⼝⾃动化测试(⼆)---Unittest框架的使⽤

⼀、

安装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

本站由北京市万商天勤律师事务所王兴未律师提供法律服务