在autoTestScheme采用json数据格式进行管理的,我们看一个demo
[{"__file": "test_contract_cancel_order","__func": "test_io","__dependent_class": null},{"title": "用例标题","tags": ["test"],"ins": {"orderId": "123","orderId1": "$1JSON[ins][orderId]","orderType": "LIMIT"},"outs": {"orderType": "$1JSON[ins][orderType]","orderId": "$5{get_str($JSON[ins][orderId])}","status":"CANCELED"}}...]
在如上的demo内,定义了多个json,第一个json代表的是对应的case(.py)文件,之后的为用例
第一个json定义说明
file 对应用例的脚本名/文件名 func 对应方法名
用例json说明
title 用例名,显示在allure上面的用例标题 tags 标签,用于定义运行的标签 issue 显示在allure报告上面的链接,非必填,例子:{‘显示的文字’:’点击文字跳转的链接’} link 如上,区别在ICON不一致 testcase 如上,区别在ICON不一致
在用例编写的时候,了解到获取数据源的方式是使用data_conversion 去获取,那么data_conversion究竟做了什么事情呢
数据替换
autoTestScheme支持数据替换,他的替换规则有如下几种
1.当前json内数据的替换
例如当前json数据为{"a": "1""b": {"c":"2"}"d":["1", "2"]}可使用$1JSON[a] 进行获取a的值可使用$1JSON[a][c] 进行获取b下面c的值可使用$1JSON[a][0] 进行获取d列表的某个值注,可无限循环获取下去,但是需要注意获取时候转换的顺序,可替换dict,list,str,int,float等json支持的类型
2.方法的转换
$1{func(1,a=2)}$ 为标识符1 为执行顺序,可自定义,为数字即可{} 方法标识符func 方法名() 为入参,已逗号进行分割,支持json数据转换,数据转换时,顺序与当前执行的顺序一致注意:方法来源于对应用例所在类的方法,可替换dict,list,str,int,float等json支持的类型
3.变量的转换
$1arg$ 为标识符1 为执行顺序,可自定义,为数字即可arg 变量名注意:变量来源于对应用例所在类的方法,可替换dict,list,str,int,float等json支持的类型
生成器支持
为配合冗余使用,当一条用例被执行多次的时候,如何让他们的参数不一样呢,我们可以使用生成器去对某个数据进行变动,如下
{"ins":{"token_id":""},"cc": "$0{redundancy()}","redundancy": 2,"outs": [],"tags":["au", "debug"],"account": "$1{get_account(email)}","title":"提币某个币种地址列表-$2JSON[cc]"}
def redundancy(self):for i in range(2):yield 'gg{}'.format(i)
在数据内使用标签
{"tags":["au", "debug"],"account": "$1JSON[tag]",}
在数据内使用子标签(列表,每个元素都是一条用例)
{"subTags":["au", "debug"],"account": "$1JSON[subTag]",}
