在测试过程中,相信大家都会遇到回调的测试。这种情况下,测试同学该如何验证?
分享一个工具:Ngrok内网穿透
操作方法:
步骤一(2选1):
1、利用mock工具,在本地启动一个服务,定义端口号为8088。
2、利用python写一个脚本,定义接口地址和端口号8088,并启动服务。
import datetime
import time
from flask import Flask, request, jsonify
import requests
app = Flask(__name__)
# 存储回调函数的字典
callbacks = {}
@app.route('/register_callback', methods=['POST'])
def register_callback():
data = request.get_json()
print("本次请求时间:{}".format(datetime.datetime.now()))
print(data)
if 'callback_url' in data and 'event' in data:
callback_url = data['callback_url']
event = data['event']
callbacks[event] = callback_url
return jsonify({'message': f'Callback for {event} registered at {callback_url}'})
elif 'verifyResult' in data:
return jsonify({"message": "ok"})
else:
return jsonify({'error': 'Invalid request data'}), 400
if __name__ == '__main__':
app.run(debug=True, port=8080)
步骤二:
1、进入Ngrok官网(https://ngrok.com/),注册Ngrok账号并下载Ngrok;
2、解压zip文件,并进入解压文件夹;
3、根据官网给定的授权码,运行如下授权命令;
./ngrok authtoken 1iclsessionsessionsessionsessionsessionL1LTo3H
授权码和账户是绑定的,在授权命令运行后,ngrok会将授权码保存在~/.ngrok2/ngrok.yml中,所以只需要运行一次,以后都可以使用。
4、根据需要,运行命令开发端口:ngrok http 8088
需要注意的是,这里的端口8088可以根据需要替换成其他端口。这条命令的意思是将本地8088端口对应的服务暴露到外网中。 运行后出现如下结果:
Session Status online
Account jenny@test.com (Plan: Free)
Update update available (version 3.4.0, Ctrl-U to update)
Version 3.3.5
Region Asia Pacific (ap)
Latency 91ms
Web Interface http://127.0.0.1:4040
Forwarding https://1cd6-152-101-167-128.ngrok-free.app-> http://localhost:8088
Connections ttl opn rt1 rt5 p50 p90
52 0 0.00 0.00 65.71 73.06
HTTP Requests
-------------
GET /register_callback 200 OK
Forwarding中是https协议对应的外网地址。
这样,凡是访问https://1cd6-152-101-167-128.ngrok-free.app的请求都将发送到localhost:8088。
步骤三:
将配置好的回调地址提供给开发进行配置。这样就可以轻松查看回调相关的业务逻辑进行测试。
以上~