htmlrunner用法_httprunner用法

这篇博客探讨了HttpRunner框架中`base_url`的使用和作用范围。`base_url`在用例层和module层都有其特定的求值规则,优先使用内层module的配置,其次使用外层用例层的配置。同时,接口变量的作用范围被限制在用例层内的API调用,同一个变量在后续接口调用中不会更新。因此,建议在API层直接定义URL,避免使用变量。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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不要通过变量维护,直接给值即可;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值