Api框架功能更新日志

apitest更新日志

20211027

  • RunCases.xml 增加 switchs 字段,可以使用指定的字段和值来组合判断用例是否执行,样例
<switchs>
			<switch name="casetype" value="business" run="true"></switch>
			<switch name="name" value="应用中心_应用管理_01" run="false"></switch>
</switchs>
  • checkpoint增加checktype为sql的断言类型,现在只支持校验返回的第一行的一个或多个字段的数据,checkpoint 字段样例 -->
{
    "checktype": "sql",
    "sqlstatement": "select * from auth_tenant where `name`='at-func-tenant01'",
    "checkcontent": {
        "field": "name",
        "value": "at-func-tenant01"
    },
    "dbalias": "steamer"
}
  • 请求方法(method)增加exeQuery方法,用来执行SQL查询语句,并可将查询的返回结果保存为上下文参数(只保存第一行的指定字段数据),save字段样例 -->
{
    "extratortype": "sql", 
    "elements": [
        {
            "expression": "id", 
            "varname": "func_tenant_id"
        }
    ]
}

20211105

  • 驱动数据的字段中添加【raw##】标识符,用于区分该字段是json对象或json数组,主要用于自动拼接请求体的场景,如某个字段为JSON对象或JSON数组,则需要加上 raw##前缀 框架在生成请求体时才不会把这个字段整体当成字符串处理
    在这里插入图片描述
  • 基础数据配置用例保存基础参数功能 增加一个控制条件 当RunCases.xml中的case的remark字段为saveParam时才执行保存基础参数到params.json文件
<case enabled="true" remark="saveParam" casetype="setup" name="基础数据配置" filepath="case/容器云/容器云-基础数据配置.xls" sheet="基础数据配置"></case>
  • save操作找不到需要提取的值时改为抛出异常
  • save操作的jsonpath提取器,增加index字段(可选),用于保存返回为json数组时取指定索引的值
{
    "extratortype": "jsonpath",
    "elements": [
        {
            "expression": "$.list[?(@.instanceNum==0)].id",
            "varname": "func_cluster_host_id01",
            "index": "0"
        }
    ]
}
  • RunCases.xml 中的 switchs开关 value可以设置为以逗号分割的多个值
<switch name="name" value="租户管理,资源管理,系统管理" run="false"></switch>
  • 将原file类型检查点改为jsonfile,增加新的file类型检查点,暂时只实现了文件是否存在校验
{
    "checktype": "file",
    "checkcontent": "download/${func_imagedownload_filename01}",
    "onerror": "retry",
    "retryinterval": "5"
}
  • 增加容器云对于下载tar类型文件的处理

20220308

  • 【raw##】关键字增加对值为null和无此字段的功能

raw##null 表示该字段的值为null
raw## 表示在json实体中不包含该字段

  • 增加将HTML测试报告发送至指定nginx功能,并在钉钉通知消息中添加相应链接
<webhooks>
       <webhook enabled="true" type="dingtalk">
           https://oapi.dingtalk.com/robot/send?access_token=xxxxxxxxxxxxxx
       </webhook>
   </webhooks>
  • 添加 GenerateTestStepsByTxts 工具 根据接口文件信息自动生成框架性脚本
    类路径 – tools.GenerateTestStepsByTxts.java

20220409

  • 项目配置文件的db节点增加dbtype字段,可指定该数据库的类型,此字段会覆盖GlobalConfig.xml中的数据库类型设置
  • 数据库类型增加对 Postgresql的支持
            <db name="td_iam">
                <param name="dbHostPort" value="192.168.0.82:54321/cmp?currentSchema=td_iam"></param>
                <param name="dbUsername" value="system"></param>
                <param name="dbPassword" value="123456"></param>
                <param name="dbType" value="postgresql"></param>
            </db>

20220714

  • 增加新api – iamlogin : 用于支持IAM登录鉴权,可在脚本中使用,需将GlobalConfig.xml中的 needLogin设置为false
case "iamlogin":
   	return iamLogin(mTestcaseStep, logger, context); 

在这里插入图片描述

20220804

  • 内置函数增加 __now() : 获取当前时间,格式固定位 yyyy-MM-dd HH:mm:ss
case "now":
	String now = DateUtils.getNowString();
	param = param.replace("__" + methodStr, now);
break;

20220819

  • 使用Hutool的http请求组件对测试框架中的此部分进行全部重构,并删除之前的HttpClient的相关代码
  • 测试下载和上传功能,修复对应的问题
  • 删除框架内置的自动登录功能,登录操作全部放到脚本中执行(现在只有iam登录,普通登录以后有需求再做)
  • save操作增加对响应头的信息提取,只支持正则提取器
{
   "extratortype": "regex",
   "elements": [
       {
           "expression": "DUBHE-ADMIN-TOKEN=(.+?);",
           "varname": "token",
           "varsource": "header",
           "headerkey": "Set-Cookie"
       }
   ]
}
  • ConfigGlobal中增加http代理设置,默认为关闭。通过代理可监控实际请求包数据
	<!-- 是否启用http代理 -->
   <httpProxy enabled="false" ip="127.0.0.1" port="8888"></httpProxy>

20220822

  • 脚本中的header列可以引用自定义参数
//保存参数
{
    "extratortype": "regex",
    "elements": [
        {
            "expression": "(.*)",
            "varname": "var_1",
            "varsource": "header",
            "headerkey": "Content-Length"
        }
    ]
}
// 在header中引用参数
[
    {
        "name": "test-header",
        "value": "${var_1}"
    }
]
  • CheckpointCheckTypeEnum 增加 status , 对http响应状态的断言
{
    "checktype": "status",
    "checkcontent": "200"
}
  • checkPoint 的 checkcontent 增加对内置函数的支持(file、count之类的校验除外)
{
    "checktype": "text",
    "checkcontent": "$.date=__today()"
}
  • 内置函数增加 base64encode,base64decode,md5,uuid,escape,unescape
System.out.println(TestcasesLibs.buildParams("__base64encode(阿萨德)", map, logger));
System.out.println(TestcasesLibs.buildParams("__base64decode(6Zi/6JCo5b63)", map, logger));
System.out.println(TestcasesLibs.buildParams("__md5(123456)", map, logger));
System.out.println(TestcasesLibs.buildParams("__uuid()", map, logger));
System.out.println(TestcasesLibs.buildParams("__escape(<script>alert('hello world')</script>)", map, logger));
System.out.println(TestcasesLibs.buildParams("__unescape(%3cscript%3ealert%28%27hello%20world%27%29%3c/script%3e)", map, logger));

/** 输出信息
6Zi/6JCo5b63
阿萨德
e10adc3949ba59abbe56e057f20f883e
9854b6ba-c6a6-41d2-bbf2-9b861cc93122
%3cscript%3ealert%28%27hello%20world%27%29%3c/script%3e
<script>alert('hello world')</script>
**/

20230203

  • 用例配置文件的 cases 节点增加 priorityLevel属性;case节点增加 priority属性
  • 用于控制用例的优先级 ,priority取值为 【0 - 3】 数字越小优先级越高。
  • priority小于等于priorityLevel时该用例才会执行
  • 为兼容历史脚本,不提供该属性则默认都为3
<!-- 如下配置,只有priority小于等于1的case才会执行 -->
<cases priorityLevel="1">
        <case enabled="true" casetype="function" name="xxxxxx" filepath="xxx" sheet="aaa" priority="0"></case>
        <case enabled="true" casetype="function" name="xxxxxx" filepath="xxx" sheet="bbb" priority="1"></case>
        <case enabled="true" casetype="function" name="xxxxxx" filepath="xxx" sheet="ccc" priority="2"></case>
        <case enabled="true" casetype="function" name="xxxxxx" filepath="xxx" sheet="ddd" priority="3"></case>
</cases>

20230210

  • 正则表达式检查点的比较操作符增加【 <>】 ,用于不等于判断。 可以支持字符串及正整数匹配,可以支持不包含匹配

20230511

  • 增加请求体中本身包含 ${} 类型的参数的处理方法。使用<meta></meta>包裹的参数脚本执行时将不会去尝试解析
    例如
    {
    	"param":"<meta>${param1}</meta>",
    	"name":"tom"
    }
    
  • 命令行参数增加 webhook 用于强制批量打开webhook开关,
    #实例  : 
    java -jar apitest.jar webhook run=RunCases-steamer-new.xml
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值