Mock服务介绍以及实现原理


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


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM