遇到的业务场景:在metersphere中,接口返回了字段属性AttributeTypeName,需要将所有字段的该属性值提取出来,再判断属性值是否正确

方案:用jsonPath将所有AttributeTypeNam提取成一个数组,结合foreach循环,判断数组的每个值是否存在于特定的数组中

第一步:提取AttributeTypeNam

第二步:添加forEach循环,在循环中写自定义脚本,添加断言判断AttributeTypeNam数组的每个值是否存在于特定的数组中

# 特定的字段类型,放在一个list中
lst = ['decimal', 'text', 'int', 'nvarchar','uniqueidentifier','picklist',]  

# 定义变量,若最后number=1,值存在于lst中,字段类型正确,=2时,不正确
number = 1  

if a in lst:  
    # 如果存在,则number不变  
    pass  
else:  
    # 如果不存在,则修改number的值  
    number = 2 

vars.putObject("number", number)

第三步:在forEach循环中,添加断言 number=1时,字段类型存在于lst中,类型正确,否则不正确

遇到的坑:

1、自定义脚本中,设置变量number时,用vars.put(“variable_name”, “variable_value”),一直设置失败 原因:vars.put方法只能用于字符串类型,非字符串类型要用vars.getObject和vars.putObject

2、ForEach控制器循环引用数组中的值,用vars.put获取变量无效 原因:直接引用就行,例如${n}

其他高级用法可参考metersphere官方文档:kb.fit2cloud.com/?p=265

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐