在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]",
}