python + flask+mock实现简单的mock测试

#pip install flask
from flask import Flask, request, json,jsonify#实例化Flask类
app = Flask(__name__)
#flask 轻量级web框架
#jsonify 用来序列化返回的json格式的数据
#request 用来获取调用接口时传入的数据#app.route定义的路由,第一个参数为接口路径,第二个参数为请求方法,不写默认为get
@app.route('/mock', methods=['POST'])
def mock():""" 模拟运营商系统:param mobile:用户手机号:param password:运营商密码:return:性别、身份证号、话费"""#获取表单数据mobile = request.form['mobile']password = request.form['password']#获取请求中的入参user=request.get_json()#获取请求头header=request.headers# 获取传入的参数pwd  例如传入的是 {"pwd":"123456"}pwd=request.values.get('pwd')try:assert password == 'a123456', u'运营商密码错误'if mobile == "12345678901":data = {'sex': 'man', 'Id number': '111111111111111111', 'charge': 105}elif mobile == "12345678902":data = {'sex': 'woman', 'Id number': '1111111111111112', 'charge': 120}elif mobile == "12345678903":data = {'sex': 'man', 'Id number': '111111111111111113', 'charge': 135}else:data = {'msg': 'mobile number not found'}except:data = {'msg': 'password error'}return json.dumps(data)if __name__ == '__main__':#启用服务 debug=True,加上这个参数之后不用重新执行,他会自动执行app.run(debug=True)

调用时可用postman,jmeter,python等

另外还可以使用unittest自带的mock 和pytest自带的mock

#payment.py
import requestsclass Payment:"""定义第三方支付类"""def auth(self, card_num, amount):"""请求第三方外部支付接口的方法, 返回响应状态码:param card_num: 卡号:param amount: 金额:return: 返回状态码, 200 代表支付成功, 500 代表支付异常, 失败"""url = "http://第三方支付url.payment"data = {"card_num": card_num, "amount": amount} # 请求参数self.res = requests.post(url, data=data)return self.res.status_code  # 返回的状态码def pay(self, user_id, card_num, amount):"""支付方法:param user_id: 用户ID:param card_num: 卡号:param amount: 支付金额:return:"""try:status_code = self.auth(card_num, amount)except TimeoutError:status_code = self.auth(card_num, amount)   # 如果支付超时, 再请求一次if status_code == 200:print("[{}]支付[{}]成功!!! 进行扣款并登记支付记录".format(user_id, amount))return "success"elif status_code == 500:print("[{}]支付[{}]失败!!! 不进行扣款".format(user_id, amount))return "Fail"
#test_pay.py
import unittest
from unittest import mockfrom unittest_mock.payment import Paymentclass PaymentTest(unittest.TestCase):"""测试支付接口"""def setUp(self):self.payment = Payment()def test_1_success(self):"""测试支付成功:return:"""self.payment.auth = mock.Mock(return_value=200)res = self.payment.pay(user_id=1001, card_num=12345678, amount=5000000)self.assertEqual('success', res)def test_2_fail(self):"""测试支付失败:return:"""self.payment.auth = mock.Mock(return_value=500)res = self.payment.pay(user_id=1001, card_num=12345678, amount=5000000)self.assertEqual('Fail', res)def test_3_retry_success(self):"""测试调用第三方接口超时之后, 再次支付成功:return:"""self.payment.auth = mock.Mock(side_effect=[TimeoutError, 200])res = self.payment.pay(user_id=1001, card_num=12345678, amount=5000000)self.assertEqual('success', res)def test_4_retry_fail(self):"""测试调用第三方接口超时之后, 再次支付失败:return:"""# side_effect 第一次会得到列表第一个值抛出TimeoutError的异常,抛出异常payment.py里会再次调用第# 三方支付接口auth,接着将列表第2个值 500返回给auth,pay函数里面代码判断 500 为失败 Fail.# side_effect 参数可以等于另外一个函数 函数的返回值,作为Mock函数的返回值,例子这里就不举了。self.payment.auth = mock.Mock(side_effect=[TimeoutError, 500])res = self.payment.pay(user_id=1001, card_num=12345678, amount=5000000)self.assertEqual('Fail', res)if __name__ == '__main__':unittest.main()

后面内容转载自:Mock:unittest - 简书

python实现mock测试相关推荐

  1. python 如何进行mock测试

    文章目录 一.背景 二.使用脚本进行mock 一.背景 为什么要进行mock? 1.在实际的开发工作过程中,前后端需要联调,但是后端的接口还没开发完成,如果前端等到后端完全开发完成,再进行联调,那么进 ...

  2. Python 中 Mock 到底该怎么玩?一篇文章告诉你(超全)

    1. 前言 微服务架构下,由于各类服务开发进度的不一致,导致联调工作经常会存在不确定性,进而导致项目延期 在实际工作中,为了保证项目进度,我们经常需要针对部分未完成模块及不稳定模块采用 Mock 方式 ...

  3. mock测试 (mock-test 模仿测试)

    mock测试就是在测试过程中,对于某些不容易构造(如 HttpServletRequest 必须在Servlet 容器中才能构造出来)或者不容易获取的对象(如 JDBC 中的ResultSet 对象) ...

  4. Java单元测试之模拟利器-使用PowerMock进行Mock测试

    首页 国产Linux Linux命令 openSUSE ArchLinux Slackware FreeBSD Ubuntu CentOS Fedora Debian PHP教程 在线教程 登录 注册 ...

  5. GoogleTest进阶——参数测试、Mock测试、耗时测试、类型测试

    1. 前情提要 GoogleTest是一个为 C++ 开发的单元测试框架,为书写单元测试提供了很多有利的轮子,可以较大程度上的避免为了书写 单元测试 而需要重复搭建轮子的困扰. 本系列文章之前有一篇入 ...

  6. java unit test moke_惊了,unittest做接口mock测试竟然这么简单

    在项目研发的时候,一般开发会先提供接口文档,虽然很多接口并没有被实现,但测试可以提前写好Mock,等接口实现时可以快速完成该接口的自动话代码编写,进而提高接口自动化测试效率,那么使用Python如何实 ...

  7. 一篇搞懂Mock测试

    1. 什么是Mock测试 mock测试就是在测试过程中,对于某些不容易构造或者不容易获取的对象/数据/场景,用一个虚拟的对象来创建以便测试的测试方法. 2. Mock测试常见场景 无法控制第三方系统接 ...

  8. 接口Mock测试结合postman运用

    目录 一.接口Mock测试 1.1 基本概念 1.2实现方式 二.Moco框架 2.1 Moco介绍 2.1.1 环境搭建 2.1.2  Moco运行 2.2常用参数配置 2.2.1定义请求方法 2. ...

  9. Mock测试是什么?

    一.Mock概念 mock 的意思是模拟,也就是模拟接口返回的信息,用已有的信息替换它需要返回的信息,从实现对上级模块的测试. 这里分为两类测试:一类是前端对接口的mock,一类是后端单元测试中涉及的 ...

最新文章

  1. ***惯用的社会工程学手法
  2. python中map函数返回值类型_Python函数精解:map函数
  3. keras_contrib 安装
  4. asp.net中URL参数加密解密过程
  5. 据说程序员是这样写代码的
  6. 【JavaWeb】【笔记】《JavaWeb入门经典》 第15章 Struts框架
  7. 中国支付清算发展简史
  8. python 3 5的值_杨桃Python基础教程第5章:Python数据类型(3)列表s[M:n]值,的,三,smn,取值...
  9. EfficientNet 简介
  10. jQuery fsBanner 手风琴
  11. backtrader 自定义indicator_BackTrader回测工具(一)
  12. Mac下的spotlight无法搜索本地资源的解决办法
  13. oracle查看表空间的序号,Oracle查询所有序列
  14. jar包自动化启动脚本+开机自启
  15. RK3588+AI视频结构化算法设计方案
  16. java springboot流动人口管理系统
  17. 不请客不送礼不求人,坚持四条“土经验”,领导不得不重用你
  18. laravel8 + 腾讯云短信,发验证码
  19. Quuppa_Focusing Locator识别定位基站ID
  20. 你希望这些事件是真的吗

热门文章

  1. java程序设计答案_JAVA程序设计课后练习答案.pdf
  2. 中创教育带你了解培训机构投诉退费纠纷增多原因
  3. 进程退出以及内存释放
  4. R 语言中的 Kolmogorov-Smirnov 检验
  5. win10电脑桌面空白无响应怎么恢复?
  6. linux进程调度HMP,hmp
  7. centos默认xfs linux_CentOS7 挂载 xfs 磁盘
  8. matlab之ones函数和zeros函数
  9. 华为鸿蒙国外,华为海外版“鸿蒙”系统在德国亮相,界面神似IOS
  10. 内存代管理器TenuredGeneration对垃圾对象的回收