mock安装
Python3中在unittest中默认已安装mock 导入:from unittest import mock
test_method.py
#coding:utf-8
import unittest
import json
from unittest import mock
from base.demo import RunMain
from base.mock_demo import mock_test
class TestMethod(unittest.TestCase):
def setUp(self):
self.run=RunMain()
def test_03(self):
print("执行了啊")
url = 'http://coding.imooc.com/api/cate'
data = {
'timestamp':'1507034803124',
'uid':'5249191',
'uuid':'5ae7d1a22c82fb89c78f603420870ad7',
'secrect':'078474b41dd37ddd5efeb04aa591ec12',
'token':'7d6f14f21ec96d755de41e6c076758dd',
'cid':'0',
'errorCode':1001
}
#第一种mock直接写到这里第一种写法
# mock_data = mock.Mock(return_value=data)
# self.run.run_main = mock_data
# res = self.run.run_main(url,'POST',data)
# print(res)
#第一种mock直接写这里第二种写法
self.run.run_main =mock.Mock(return_value=data)
res = self.run.run_main(url,'POST',data)
print(res)
#最终封装到mock_demo.py类中调用
# res = mock_test(self.run.run_main,data,url,"POST",data)
# self.assertEqual(res['errorCode'],1001,'测试失败')
# print(res)
#正常调用接口返回正常数据
# res = self.run.run_main(url,'POST',data)
# self.assertEqual(res['errorCode'],1000,"测试失败")
print ("这是第一个case")
#@unittest.skip('test_02')
@StopIteration
def test_02(self):
url = 'http://coding.imooc.com/api/cate'
data = {
'timestamp':'1507034803124',
'uid':'5249191',
'uuid':'5ae7d1a22c82fb89c78f603420870ad7',
'secrect':'078474b41dd37ddd5efeb04aa591ec12',
'token':'7d6f14f21ec96d755de41e6c076758dd',
'cid':'0'
}
res = self.run.run_main(url,'POST',data)
print("这里是res",res)
self.assertEqual(res['errorCode'],1000,"测试失败")
print("这是第二个case")
if __name__ == '__main__':
unittest.main()
mock_demo.py
#coding:utf-8
from unittest 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
demo.py
import requests
import json
class RunMain:
def send_get(self,url,data):
res = requests.get(url=url,data=data).json()
return res
def send_post(self,url,data):
res = requests.post(url=url,data=data).json()
return res
def run_main(self,url,method,data=None):
res = None
if method == 'GET':
res = self.send_get(url,data)
else:
res = self.send_post(url,data)
return res