diffy接口测试demo
diffy原理图,这里就不讲了,可以去github看文档。这里就记录下写的小demo~
- 使用flask编写一个接口脚本作为 primary code,app.py(写了一个 /hello 的get接口);
- 复制一份primary code作为备份,app_bak.py;
- 修改primary code 作为待测版本,app_candidate.py(在 /hello 中增加字段 “name“);
- 克隆diffy源码并进行sbt编译
git clone https://github.com/opendiffy/diffy.git
cd diffy
./sbt assembly
- 分别使用命令行启动服务
env FLASK_APP=app.py flask run -p 8000
env FLASK_APP=app_bak.py flask run -p 8001
env FLASK_APP=app_candidate.py flask run -p 8002
- 运行daffy jar:
java -jar diffy-server.jar -candidate=localhost:8002 -master.primary=localhost:8000 -master.secondary=localhost:8001 -service.protocol=http -serviceName='My-Service' -proxy.port=:8880 -admin.port=:8881 -http.port=:8888 -rootUrl='localhost:8888' -allowHttpSideEffects=true -summary.email='mingming.xie@mxplayer.in'
- 通过proxy端口访问接口
curl http://localhost:8880/hello
这时候已启动的 8000,8001,8002 接口都会收到通过8880端口的请求。
- 访问 http://localhost:8888 查看diff结果。
从图中可以看出 content-length和name发现了不同。 这是一个小的demo,算是可以把diffy搭建起来可以使用了,后续还是得基于实际业务去做调整哇。
app.py
from datetime import time, datetime
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Hello World!'
@app.route('/hello', methods=['GET'])
def say_hello():
dic1 = {
"code": 1,
"msg": "success",
"date": datetime.now().strftime('%Y-%m-%d %H:%M:%S')
}
return dic1
if __name__ == '__main__':
app.run(debug=True)
app_candidate.py
from datetime import time, datetime
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Hello World!'
@app.route('/hello', methods=['GET'])
def say_hello():
dic1 = {
"code": 1,
"msg": "success",
"name": "new_version",
"date": datetime.now().strftime('%Y-%m-%d %H:%M:%S')
}
return dic1
if __name__ == '__main__':
app.run(debug=True)
|