mock服务入门实践
2019-10-08 本文已影响0人
小鱿鱼Gun神
mock是以代码来实现fiddler的一个功能,模拟返回数据
mock模拟接口返回数据,如下在test_method.py文件中调用mock,首先将mock导入import mock
,导入之后在case中运用,模拟调用的方法,将入参作为返回值
def test_02(self):
url = 'https://tapi.*********/login'
data = {
'mobile': '159****456',
'password': 'e10adc*******20f883e',
'code': 200
}
#调用mock时返回一个值
mock_data = mock.Mock(return_value=data)
self.run.run_main=mock_data
res = self.run.run_main(url, 'POST', data)
print(res)
self.assertEqual(res['code'], 200, '测试失败')
执行结果如下:
执行结果.png
修改入参code的值
运行结果.png
重构封装mock服务(创建一个文件mock_demo.py),因为在requests接口请求方法里有url,method,data,所以这些参数也要传,除此之外在mock的时候也需要有个方法self.run.run_main
(指mock的是run_main方法),因此模拟的方法也应该封装进去
模拟mock封装,文件名mock_demo.py
# coding:utf-8
import mock
#模拟mock封装,把请求数据和响应数据给返回出去
def mock_test(mock_method,request_data,url,method,response_data):
mock_method = mock.Mock(return_value=response_data)
res = mock_method(url,method,request_data)
return res
mock封装好后,将mock方法导入test_method.py文件,使用from base.mock_demo import mock_test
,调用mock方法传入方法名、请求数据,url,请求方法,返回数据
res=mock_test(self.run.run_main,data,url,"POST",data)
具体实现如下:
# coding:utf-8
import unittest
from base.test import RunMain
import json
from base.mock_demo import mock_test
class TestMethod(unittest.TestCase):
def setUp(self):
#实例化类
self.run = RunMain()
def test_01(self):
url = 'https://tapi.******************/login'
data = {
'mobile': '159*****55',
'password': 'e10*********83e'
}
res = self.run.run_main(url, 'POST', data)
#返回值转换为字典型
res_a=json.loads(res)
self.assertEqual(res_a['code'],200,'测试失败')
print('这是test01')
def test_02(self):
url = 'https://tapi.**************/login'
data = {
'mobile': '159******56',
'password': 'e10************3e',
'code': 201
}
res=mock_test(self.run.run_main,data,url,"POST",data)
print(res)
self.assertEqual(res['code'], 200, '测试失败')
if __name__ == '__main__':
unittest.main()
运行结果:
运行结果.png