在autoTestScheme采用json数据格式进行管理的,我们看一个demo

  1. [
  2. {
  3. "__file": "test_contract_cancel_order",
  4. "__func": "test_io",
  5. "__dependent_class": null
  6. },
  7. {
  8. "title": "用例标题",
  9. "tags": ["test"],
  10. "ins": {
  11. "orderId": "123",
  12. "orderId1": "$1JSON[ins][orderId]",
  13. "orderType": "LIMIT"
  14. },
  15. "outs": {
  16. "orderType": "$1JSON[ins][orderType]",
  17. "orderId": "$5{get_str($JSON[ins][orderId])}",
  18. "status":"CANCELED"
  19. }
  20. }
  21. ...
  22. ]

在如上的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内数据的替换

  1. 例如当前json数据为
  2. {
  3. "a": "1"
  4. "b": {
  5. "c":"2"
  6. }
  7. "d":["1", "2"]
  8. }
  9. 可使用$1JSON[a] 进行获取a的值
  10. 可使用$1JSON[a][c] 进行获取b下面c的值
  11. 可使用$1JSON[a][0] 进行获取d列表的某个值
  12. 注,可无限循环获取下去,但是需要注意获取时候转换的顺序,可替换dictliststrintfloatjson支持的类型

2.方法的转换

  1. $1{func(1,a=2)}
  2. $ 为标识符
  3. 1 为执行顺序,可自定义,为数字即可
  4. {} 方法标识符
  5. func 方法名
  6. () 为入参,已逗号进行分割,支持json数据转换,数据转换时,顺序与当前执行的顺序一致
  7. 注意:方法来源于对应用例所在类的方法,可替换dictliststrintfloatjson支持的类型

3.变量的转换

  1. $1arg
  2. $ 为标识符
  3. 1 为执行顺序,可自定义,为数字即可
  4. arg 变量名
  5. 注意:变量来源于对应用例所在类的方法,可替换dictliststrintfloatjson支持的类型

生成器支持

为配合冗余使用,当一条用例被执行多次的时候,如何让他们的参数不一样呢,我们可以使用生成器去对某个数据进行变动,如下

  1. {
  2. "ins":{
  3. "token_id":""
  4. },
  5. "cc": "$0{redundancy()}",
  6. "redundancy": 2,
  7. "outs": [],
  8. "tags":[
  9. "au", "debug"
  10. ],
  11. "account": "$1{get_account(email)}",
  12. "title":"提币某个币种地址列表-$2JSON[cc]"
  13. }
  1. def redundancy(self):
  2. for i in range(2):
  3. yield 'gg{}'.format(i)

在数据内使用标签

  1. {
  2. "tags":[
  3. "au", "debug"
  4. ],
  5. "account": "$1JSON[tag]",
  6. }

在数据内使用子标签(列表,每个元素都是一条用例)

  1. {
  2. "subTags":[
  3. "au", "debug"
  4. ],
  5. "account": "$1JSON[subTag]",
  6. }