需求背景:
风控决策引擎中,根据用户的特征值来得出策略结果,用户特征值部分的产生较为负责,需要一系列数据符合一些规则才会产生需要的特征值,所以测试策略结果时,如果能跳过特征值产生而插入特定数据这一步,直接mock,分层测试,会让测试策略更有效率
最终效果图
服务端代码分析
- part 1 : 使用flask框架产生接口路由部分
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| from flask import Flask,jsonify,render_template,url_for,request app = Flask(__name__) @app.route('/', methods=['GET', 'POST']) def index(): #render_template渲染模版 return render_template("index.html") @app.route("/changefeatureall",methods=["POST"]) def changefeatureall(): commitid = request.form.get('commitid') wht_msg.generate(commitid) if mydomain: res = {"code": "0", "data":"成功" } wht_msg.update_sql_all(commitid) return jsonify(res)
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| def connect(sql,flag,db="haixin"): config = { 'host':'xxx', 'port':xxx, 'user':'xxx', 'password':'xxx', 'db':db, 'charset':'utf8mb4', 'cursorclass':pymysql.cursors.DictCursor, } connection = pymysql.connect(**config) try: with connection.cursor() as cursor: # 执行sql语句,插入记录 cursor.execute(sql); if flag ==1: result = cursor.fetchone() connection.commit() else: result = cursor.fetchall() print len(result) # 没有设置默认自动提交,需要主动提交,以保存所执行的语句 connection.commit() return result finally: connection.close()
|
part 3 : 数据库逻辑处理部分
1 2 3 4 5 6
| #具体逻辑较复杂,展示最简单的插入与 u def insert_sql(domain,content): sql = "insert into mk_domain_value(domain_name,content)VALUES('%s','%s')" %(domain,content) print sql result = connect(sql,1) print result
|
part 4 :前端展示部分
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| #展示数据前后端交互部分 $(document).ready(function() { $.ajax({ type: 'post', url: "/changefeatureall", dataType: 'json', data: { 'mydomain': 'http://xxxxxxx', 'commitid': $('#commitid').val(), }, error: function () { alert('请求失败,原因可能是:' +'输入参数错误或请求失败' +'!'); }, success: function (data) { alert("yes"); } });
|
1 2 3 4
| 1.初始化:根据策略,绘制参数输入框,输入参数后,请求制定参数对应的数据,产生初次mock数据 2.初次mock链接会替换系统中的feature请求链接 3.此时修改feature结果,就能动态修改mock数据,见截图 4.替换的请求链接可以还原
|