微服务接口测试—高效动态传参
你是否也和两位测试同学一样,每次测试微服务接口,都要修改脚本,而且还容易将脚本改错?不用担心,小编为大家找来测试大佬,用两种最简单的方法为大家答疑解惑~
1 方法一:页面直接获取
以流程服务云微服务接口:inProcess public static boolean inProcess(String businessKey)为例。
参数明细表
操作过程中,需将参数和返回值都放到表单页面上。
实现步骤
第一步,在表单页面加入两个文本框,标识分别是businesskey和response;同时新增一个按钮,标识为inProcess。
参数及返回值设置示例
第二步,通过3个操作读取脚本中的页面参数。
1)从页面获取businesskey的值,实现代码如下所示:
var businessKey = this.getModel().getValue('businesskey');
2)执行微服务,实现代码如下所示:
var ret = WorkflowServiceHelper.inProcess(businessKey);
3)把返回值放到response中,实现代码如下所示:
1this.getModel().setValue('response',ret);
完整操作脚本如下所示:
require("kd.bos.servicehelper.workflow.WorkflowServiceHelper"); var plugin = new FormPlugin({ registerListener : function(e){ this.addClickListeners("kdtest_inprocess") }, click : function(e){ var key = e.getSource().getKey(); var businessKey = this.getModel().getValue('businesskey'); if (key == 'kdtest_inprocess') { var ret = WorkflowServiceHelper.inProcess(businessKey); this.getModel().setValue('response',ret); } }, });
第三步,点击“预览”按钮进行表单预览,输入businesskey的值,点击“inProcess”按钮,返回值将显示在response中。
预览按钮示例
返回效果示例
2 方法二:页面+查询数据库
部分微服务接口有很多参数,如果一条条地写到页面上会十分繁琐。这时我们可以通过传入一个简单的参数去查询数据库,从数据库获得对应的一系列参数。
以流程服务云微服务接口:getProcessWindowRecords public static List<map> getProcessWindowRecords(Long procdefId, DynamicObject billObj)为例。
参数明细表
操作过程中,DynamicObject billObj需要调用loadSingle()方法,传入businesskey和entityNumber中获取参数。那么,getProcessWindowRecords接口最终需要的参数就是procDefId、businesskey和entityNumber。
通过查询wf_task,可以找到这三个数据。接下来,只需要在表单上输入billno,对wf_task进行查询,则可以直接获取这三个参数。
查询wf_task示例
实现步骤
第一步,在表单页面加入文本框,标识为billno;同时增加按钮,标识为getprocesswindowrecords。
第二步,通过2个操作获取参数。
1)查询数据库:在wf_task中通过对billno进行查询,得到businesskey、processdefinitionid和entitynumber,实现代码如下:
var billno = this.getModel().getValue('billno'); var resource = QueryServiceHelper.queryOne("wf_task",'businesskey,processdefinitionid,entitynumber',[new QFilter('billno','=',billno)]); var businesskey = resource.getString('businesskey'); var procdefid = resource.getString('processdefinitionid'); var entitynumber = resource.getString('entitynumber');
2)获取参数billObj:调用loadSingle()方法,实现代码如下:
var obj = BusinessDataServiceHelper.loadSingle(toLong(businesskey),entitynumber);
完整代码如下:
require("kd.bos.servicehelper.workflow.WorkflowServiceHelper"); require("kd.bos.servicehelper.devportal.BizScriptServiceHelper"); require("kd.bos.servicehelper.BusinessDataServiceHelper"); require("kd.bos.orm.query.QFilter");//筛选 require("kd.bos.dataentity.entity.DynamicObject");//resource require("kd.bos.servicehelper.QueryServiceHelper");//方法的类 require("kd.bos.mvc.cache.PageCache");//缓存 var plugin = new FormPlugin({ registerListener : function(e){ this.addClickListeners('kdtest_getprocesswindowre','getprocesswindowrecords')}, click : function(e){ var key = e.getSource().getKey(); var billno = this.getModel().getValue('billno'); var resource = QueryServiceHelper.queryOne("wf_task",'businesskey,processdefinitionid,entitynumber',[new QFilter('billno','=',billno)]); var businesskey = resource.getString('businesskey'); var procdefid = resource.getString('processdefinitionid'); var entitynumber = resource.getString('entitynumber'); var obj = BusinessDataServiceHelper.loadSingle(toLong(businesskey),entitynumber); if (key == 'getprocesswindowrecords'){ var ret = WorkflowServiceHelper.getProcessWindowRecords(toLong(procdefid),obj); this.getModel().setValue('response',ret); } }, });
第三步,预览表单页面,输入billno,点击“getprocesswindowrecords”按钮,执行代码。
执行效果示例
3 划重点
微服务接口测试脚本复用的方法有以下两种:
第一种方法:从页面直接获取,把参数和返回值都放到表单页面上。此方法适用于入参个数较少,或者入参可以直观地被获取到;
第二种方法:页面+查询数据库获取。通过传入一个简单的参数去查询数据库,从数据库获得对应的一系列参数。此方法更适用于入参个数较多,参数获取比较复杂的情况。
#往期推荐#
更多精彩内容,“码”上了解!↓
微服务接口测试—高效动态传参
本文2024-09-23 01:12:21发表“云苍穹知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-cangqiong-144448.html