2.1 原理
在接口没有开发完成的时候使用的模拟数据。只要有接口文档,知道数据返回的格式,就可以通过mock去模拟一个请求返回的数据
就和fiddler里面的AutoResponder差不多,拦截到相应请求,然后返回对应响应。
通过模拟返回值来实现,不管传进来的是啥。
# coding=utf-8
import requests
url = "http://www.baidu.com/login"
data = {
"username": "zz",
"password": "1111"
}
def post_request(url, data):
res = requests.post(url, data).json()
return res
2.2 unittest中使用mock
# coding=utf-8
import mock
import requests
import unittest
url = "http://www.baidu.com/login"
data = {
"username": "zz",
"password": "1111"
}
def post_request(url, data):
res = requests.post(url, data).json()
return res
class TestLogin(unittest.TestCase):
def setUp(self):
print("case开始执行")
def tearDown(self):
print("case执行结束")
def test_01(self):
data = {
"username": "11111111"
}
success_test = mock.Mock(return_value=data)
post_request = success_test
res = post_request
self.assertEqual("1112222", res())
if __name__ == "__main__":
unittest.main()
2.3 moco runner
就一个小工具。。。
到moco-runner-0.12.0-standalone.jar这个文件所在文件夹,启动MockRunner服务
java -jar moco-runner-0.12.0-standalone.jar start -p 8801 -c config.json
config.json文件,如果url是/login的时候就返回text是zzy
[{
"request":
{
"url": "/login"
},
"response":
{
"text": "zzy"
}
},
{
"request":
{
#可以设定请求方法
"method": "post"
"url": "/login"
},
"response":
{
#返回字典
"json": {
"user": "111",
"password": "222",
"message": "this is text"
}
}
}]