httprunner用法

1. httprunner在一个用例single_casecenter_postpone.yaml中:

- config:
    name: 订单延期
    base_url: ${get_config(casecenter_url)}

###前置条件:下单
- test:
    name: 正常场景_下单成功
    variables:
        expected_result: 'E0000'  #成功
    testcase: testcases/modulecase/casecenter/module_casecenter_takecase.yaml
    validate:
        - eq: [status_code, 200]
        - eq: [content.code, '000000']
        - eq: [content.message, '请求成功']
    output:
        - orderNo
        - orderId

#######订单为待接单时,延期订单失败
- test:
    name: 异常场景_待接单的订单延期失败
    variables:
        expected_result: 'E0004'  #当前订单状态下,不可执行该操作
    api: api/pc/casecenter/casecenterPostpone.yaml
    setup_hooks:
        - ${sign_api($request)}
    teardown_hooks:
        - ${respone_decode($response)}
    validate:
        - eq: [status_code, 200]
        - eq: [content.code, '000000']
        - eq: [content.message, '请求成功']
        - eq: [content.data.result, $expected_result]

###前置条件:app登录
- test:
    name: app登录
    testcase: testcases/modulecase/app/module_app_login.yaml
    output:
        - h5_token
        - visitorId  #作业人员id

###前置条件:作业人员给自己派单
- test:
    name: 作业管理员给自己派单
    testcase: testcases/modulecase/module_dispatch_sendOrder.yaml

- test:
    name: 正常场景_订单延期成功
    variables:
        expected_result: 'E0000'  #成功
    api: api/pc/casecenter/casecenterPostpone.yaml
    setup_hooks:
        - ${sign_api($request)}
    teardown_hooks:
        - ${respone_decode($response)}
    validate:
        - eq: [status_code, 200]
        - eq: [content.code, '000000']
        - eq: [content.message, '请求成功']
        - eq: [content.data.result, $expected_result]

  

   1> 下单module_casecenter_takecase.yaml的域名为A

   2> 订单延期api/pc/casecenter/casecenterPostpone.yaml的域名为A

   3> app登录module_app_login.yaml的域名为B

   4>作业管理员给自己派单module_dispatch_sendOrder.yaml的域名为C

   base_url是httprunner框架支持的一个关键字,该流程中,

   6> module模块的module_casecenter_takecase.yaml,api/pc/casecenter/casecenterPostpone.yaml是相同的域名,是通过该流程config的base_url求取的A;

 

 

   7>app登录module_app_login.yaml的域名是通过在module_app_login.yaml脚本的config的base_url求取的B;

 

 

   8> 作业管理员给自己派单module_dispatch_sendOrder.yaml的域名也是通过在module_dispatch_sendOrder.yaml脚本的config的base_url求取的C;

 

 结论:base_url的作业范围:优先使用内层module的base_url,若module层没有求取该值,则会使用外层用例层(flow或single)求取的base_url;故一般base_url在外层用例层求取,用例某个步骤的base_url是其它特殊值时,可在module层里重新求取该值;

2. 接口中的变量作用范围:

  1> 在用例层single_casecenter_postpone.yaml脚本中,步骤 异常场景_待接单的订单延期失败中,直接调用了api层,api接口参数url使用了变量uri赋值

 

    2> 上一步骤的下一个步骤是app登录(module_app_login.yaml),该module调用app登录接口

 

   3> app登录的api中的url也是uri变量赋值

 

 

   4> 执行脚本后

 

   重要结论:一个用例层的步骤中,直接调用api层时,同一个变量uri一直都为第一个api调用时给的值,后面的api接口通过uri赋值不会生效;故api层维护接口时,

url不要通过变量维护,直接给值即可;

 

posted @ 2020-08-12 11:04  宁静~朝夕  阅读(374)  评论(0编辑  收藏  举报