我是靠谱客的博主 哭泣睫毛,最近开发中收集的这篇文章主要介绍python接口测试之mock(三),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

前面介绍了moco的详细的使用,它主要是基于moco-runner-0.11.0-standalone.jar,通过编写json的文件来实现,mock翻译过来就是模拟的意思,也就是说,它是将测试对象所依存的对象替换为虚构对象的库,该虚构对象的调用允许事后查看。Python中有几个库是可以模拟请求和响应的.

1. mock

在python的2.x版本中,mock是属于第三方的库,需要单独的按钮,在python3.3的版本以后,不需要单独的安装,从unitest里直接导入就可以了

接下来我们来看mock库的经常使用的方法以及它的详细的帮助信息,见以下的代码:

class Count:
def add(self):
pass
from unittest import mock
import unittest
class test_add(unittest.TestCase):
def test_add(self):
count = Count()
#找到要替换的对象,这个对象可以是一个类,或者是一个函数,或者是一个类实例
#实例化Mock类得到一个mock对象,并且设置这个mock对象的行为,比如被调用的时候返回什么值,被访问成员的时候返回什么值等
count.add = mock.Mock(return_value=12)
result = count.add(8,4)
self.assertEqual(result,12)
if __name__ == '__main__':
unittest.main()

2. responses库

安装: pip install responses

接下来看看responses的使用方法:

import responses
import requests, unittest
class responsesTest(unittest.TestCase):
def setUp(self):
pass
def tearDown(self):
pass
@responses.activate
def test_simple1(self):
responses.add(responses.GET, 'http://twitter.com/api/1/foobar',
json={'error': 'not found'}, status=404)
url = 'http://twitter.com/api/1/foobar'
r = requests.get(url)
# print(r.json())
self.assertEqual(r.json()['error'], 'not found')
if __name__ == '__main__':
unittest.main()

 

import json,responses, requests, unittest
class responseTest(unittest.TestCase):
def setUp(self):
pass
def tearDown(self):
pass
@responses.activate
def test_case1(self):
def request_callback(request):
payload = json.loads(request.body)
resp_body = {'value': sum(payload['numbers'])}
headers = {'request-id': '728d329e-0e86-11e4-a748-0c84dc037c13'}
return (200, headers, json.dumps(resp_body))
responses.add_callback(
responses.POST, 'http://calc.com/sum',
callback=request_callback,
content_type='application/json',
)
resp = requests.post(
'http://calc.com/sum',
json.dumps({'numbers': [1, 2, 3]}),
headers={'content-type': 'application/json'},
)
self.assertEqual(resp.json()['value'], 6)
self.assertEqual(resp.status_code,200)
self.assertEqual(resp.headers['request-id'], '728d329e-0e86-11e4-a748-0c84dc037c13')
if __name__ == '__main__':
unittest.main()

 

转载于:https://www.cnblogs.com/xiaowangzi1110/p/8179745.html

最后

以上就是哭泣睫毛为你收集整理的python接口测试之mock(三)的全部内容,希望文章能够帮你解决python接口测试之mock(三)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(82)

评论列表共有 0 条评论

立即
投稿
返回
顶部