目录

  • 1.pact-python契约测试示例
  • 2. 生产者端,用于生成数据内容
  • 3. 1号消费者
  • 4. 2号消费者

1.pact-python契约测试示例

'''pact-python契约测试示例
'''
import atexit
import unittestimport requests
from pact import Consumer
from pact import Provider# 定义一个契约(pact),明确消费者与生产者,明确契约文件的存放路径
pact_demo=Consumer('consumer02').has_pact_with(Provider('provider'),pact_dir='./pacts')
# 服务启动
pact_demo.start_service()
#服务的注册
atexit.register(pact_demo.stop_service)
class PactDemo(unittest.TestCase):# 定义契约的内容def test_pact(self):# 定义预期的响应结果expected = {'name': 'xuzhu','age': 18}#定义契约的实际内容(pact_demo.given('test service').upon_receiving('for pact').with_request('get','/provider') #向生产者发送请求时,需要注意请求方法、路径、参数、头部信息等.will_respond_with(status=200,body={'first':'xu','second':'zhu'})) #生产者在被请求之后返回的响应的结果。可以自己定义内容的# 基于requests库向pact发送请求,验证契约生成的结果是否正确 ,请求的实际上是pact自带的mock服务,端口默认是1234with pact_demo:resp = requests.get('http://localhost:1234/provider').json()print(resp)# 断言校验,判断预期结果是否与pact的结果相符合self.assertEqual(expected,resp)if __name__ == '__main__':pd = PactDemo()pd.test_pact()

2. 生产者端,用于生成数据内容

'''生产者端,用于生成数据内容
'''
from flask import Flask, jsonifyapp = Flask(__name__)## 生产者接口,用于生产数据内容,提供给消费者进行数据消费
@app.route('/provider',methods = ['POST','GET'])
def provider():data = {'name': 'xuzhu','age': 18}return jsonify(data)if __name__ == '__main__':app.run(host='127.0.0.1',port=8000,debug=True)

3. 1号消费者

'''1号消费者
'''
import requests
from flask import Flask, jsonifyapp = Flask(__name__)#消费者1号,用于消费生产者的数据,进行业务处理
@app.route('/consumer01',methods = ['GET'])
def consumer_first():#获取生产者的数据内容resp = requests.get('http://127.0.0.1:8000/provider').json()#处理数据内容并返回result = {'address': 'CSC','msg': 'OK','name': resp['name']}return jsonify(result)if __name__ == '__main__':app.run(host='127.0.0.1',port=5001,debug=True)

4. 2号消费者

'''2号消费者
'''
import requests
from flask import Flask, jsonifyapp = Flask(__name__)#消费者1号,用于消费生产者的数据,进行业务处理
@app.route('/consumer02',methods = ['GET'])
def consumer_second():#获取生产者的数据内容resp = requests.get('http://127.0.0.1:8000/provider').json()#处理数据内容并返回result = {'address': 'CSC','msg': 'OK','name':{'first': resp['first'],'second': resp['second']}}return jsonify(result)if __name__ == '__main__':app.run(host='127.0.0.1',port=5002,debug=True)

Python pact契约测试实战相关推荐

  1. 契约测试概念以及契约测试框架SCC VS PACT对比

    契约测试 基于契约,对消费者与生产者间的协作的验证, 本质上就是验证生产者所提供的内容是否满足消费者的期望. 契约测试在行业内,主要分为两种类型,消费者驱动的契约测试和生产者驱动的契约测试,最常见的就 ...

  2. 为什么要抛弃Pact?如何快速实现契约测试(CDC)

    前言 在前几天的博客中,我转载了一篇文章,其中介绍了契约测试和pact是怎么实施的,的确很有帮助.但我经过研究,其实是pact本身也是有缺陷的,结合我近期在使用的服务型工具和我的实际情况,觉得实现契约 ...

  3. 07 契约测试:如何进行消费者驱动的契约测试?

    上一课时,我讲到了微服务架构下的组件测试,它是针对单个微服务的验收测试,虽然保障了单个微服务功能的正确性,但要想保障微服务间交互功能的正确性,就需要进行契约测试. 契约测试产生的背景 在介绍契约测试之 ...

  4. 契约测试(中):利用PACT做契约测试

    软件质量保障 阿里巴巴资深测试开发工程师,工作重点为微服务测试.接口测试平台研发等. 主要分享软件测试以及测试开发博文,记录工作中的所思所获,介绍互联网大厂测试基建相关技术. 针对契约测试市面上提供了 ...

  5. 契约测试框架-Pact实践

    在前一篇博客中我们讲到契约测试是什么,以及它能给我们软件交付带来什么价值,本次将介绍一个开源的契约测试框架Pact,它最初是用ruby语言实现的,后来被js,C#,java,go,python 等语言 ...

  6. pytest测试实战 电子书_电子书丨Selenium 3+Python 3自动化测试项目实战:从菜鸟到高手...

    ▊<Selenium 3+Python 3自动化测试项目实战:从菜鸟到高手> 田春成 著 电子书售价:39.5元 2019年9月出版 Selenium是目前非常流行的一种自动化测试工具.本 ...

  7. 2.python爬虫实战:爬取近5年的中国大学排行榜信息【Python】(测试代码+api例程)

    目录 API说明: 思路 注意事项 完整代码 总结 欢迎关注 『Python』 系列,持续更新中 欢迎关注 『Python』 系列,持续更新中 爬取近5年的中国大学排行榜信息,在python爬虫爬取2 ...

  8. 【保姆级】黑客入门教程「Python安全攻防:渗透测试实战指南」经典纯狱风~

    前言 网络江湖,风起云涌,攻防博弈,从未间断,且愈演愈烈.从架构安全到被动纵深防御,再到主动防御.安全智能,直至进攻反制,皆直指安全的本质--攻防.未知攻,焉知防! 每一位网络安全从业者都有仗剑江湖的 ...

  9. 微服务契约测试-Pact

    一.微服务概述 本质是一种架构模式,是SOA(面向服务型架构)的一种变体,每个服务围绕具体的业务进行构建,可以独立部署:每个服务运行于独立的进程中,服务间用Rest API进行通讯. 单体架构 优点 ...

最新文章

  1. 最新数据:一图看清全球393家独角兽公司
  2. ie8开发人员工具无法使用,按f12任务栏里出现任务,但是窗体不弹出
  3. GNU Radio ieee802-15-4、ZigBee 实现
  4. C语言加取址符的作用,C语言中指针和取地址符的关系
  5. ---Android源码的下载单独的git库的方法
  6. 六. 异常处理9.finally块
  7. SharePoint2010内容类型剖析(四)
  8. linux系统做的小游戏,2007最新 100个Linux系统上的小游戏汇集
  9. c语言与java负数补码,详解原码、反码与补码存储与大小
  10. 使用异或解题 —— 序列中仅出现一次的两个数
  11. Life is short, you need Python. ——Bruce Eckel
  12. 把“TCP/IP”协议讲明白
  13. 深入分析.NET应用程序SQL注入【危害】
  14. 摩拜单车微信小程序开发技术总结
  15. 计算机视觉行业,这_体育行业中计算机视觉的用例
  16. Windows蓝屏的解决办法(如:UNEXPECTED_STORE_EXCEPTION蓝屏)
  17. [乱搞 暴力] BZOJ 1142 [POI2009]Tab
  18. R语言威尔科克森(Wilcoxon)分布
  19. C#画布的创建和圆的画法
  20. Kernel启动流程源码解析 1 head.S

热门文章

  1. 思科---北京某销售公司真实网络环境拓扑(图多杀猫)
  2. 清明假期搞了个“精灵球“
  3. 下载和运行GitHub上的代码教程总结
  4. 【数据结构】时间复杂度_空间复杂度
  5. java SM9密钥转成String型
  6. 【智能优化算法】基于人工蜂群算法求解多目标优化问题附matlab代码
  7. 3.11 CMMI3级——组织培训(Organizational Training)
  8. python写井字棋_python实现简单井字棋游戏
  9. manjaro安装gcc
  10. 从RDA5981A/B/C编译后map文件和datasheet分析内存分配情况