测试框架HttpRunner—2.结构解析

一、结构解析

HttpRunner v3.x 支持三种测试用例格式,即 pytest,YAML 和 JSON。

1.1、用例结构

每个测试用例都是 HttpRunner 的子类(一个类即为一个测试用例),并且必须具有两个类属性:config 和 teststeps

  • config:配置测试用例级别的设置,包括 base_url,verify,variables,export。

  • teststeps:测试步骤的列表(List [Step]),每个步骤对应一个 API 请求或另一个测试用例的应用。此外,还支持 variables/extract/validate/hooks 来创建极其复杂的测试方案。

1.2、链式调用

 HttpRunner v3.x 的最强大功能之一是链式调用,使用它无需记住任何测试用例格式的详细信息,并且在 IDE 中编写测试用例时可以智能完成。

1.3、config下的属性设置

1.name 必填 用例名称

 运行后,在debug日志里,可以看的用例名称被展示出来。

2.base_url 选填

此配置一般在多环境切换中使用,比如你的这套测试用例在qa环境,uat环境都要使用,那么就可以把基础地址(举例http://demo.qa.com),设置进去。在后面的teststep中,只需要填上接口的相对路径就好了(举例 /get)。
这样的话,切换环境运行,只需要修改base_url即可。

3.variables 选填  变量

config中的变量为公共变量,step中还会有步骤变量。

step变量优先级高于config变量,重名变量优先引用step中变量。

4.verify 选题  是否验证服务器TLS证书的开关

通常设置为flase,当你发现SSL报错了,可以检查一下是不是verify没传,或者设置了True。

SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self signed certificate in certificate chain (_ssl.c:1076)'))

5.export  选填  导出

导出变量,用于step间参数的传递

  1. 在config中配置export“foo3”这个变量。
  2. 在第一个Step中,.extract() 提取了"body.args.foo2"给变量“foo3”。
  3. 在第二个Step中,引用变量"foo3"。

1.4、teststeps下的属性设置

1.RunRequest(name)

  RunRequest的参数名用于指定teststep名称,它将显示在执行日志和测试报告中。

2. .with_variables

  用于存放变量,但是这里的是Step步骤里的变量,不同的Step的变量是相互独立的。所以对于多个Step都要使用的变量,我们可以放到config的变量里去。

  另外,如果config和Step里有重名的变量,那么当你引用这个变量的时候,Step变量会覆盖config变量。

3. .method(url)

  这里就是指定请求API的方法了,常用的get、post等等。如图所示,就是用的get方法,括号里的url就是要请求的地址了。

  这里要注意的是,如果在config里设置了基础url,那么步骤里的url就只能设置相对路径了。

4. .with_params

  这个就简单了,测接口不都得要传参么,对于params类型的传参,就放这就行了,key-value键值对的形式。对于body形式的传参,看后面。

5. .with_headers

  同样,有header要带上的就放这里。

6. .with_cookies

  需要带cookie的,可以用.with_cookies方法。

7. .with_data

  对于body类型的传参,可以用.with_data。

8. .with_json

  如果是json类型的body请求体,可以用.with_json。

9. .extract

  这里就是要做提取操作了,使用.with_jmespath(jmes_path: Text, var_name: Text)。

  这里是采用了JMESPath语言,JMESPath是JSON的查询语言,可以便捷的提取json中你需要的元素。

  第一个参数是你的目标元素的jmespath表达式,第二个元素则是用来存放这个元素的变量,供有需要的引用。

  这里不展开,后面单讲。

10. .validate

  断言,我们测试最终就是要验证接口返回是否符合预期。

  那在httprunner框架中,可以使用assert_XXX(jmes_path: Text, expected_value: Any)来进行提取和验证。

  第一个参数还是jmespath表达式,第二个参数则是预期值。

  assert_XXX这种方式相信用过自动化测试框架的都不会陌生,所以也非常容易上手。目前httprunner还是封装了非常丰富的断言方法的,相信可以满足绝大多数的需求了。

  1. equals: 是否相等
  2. less_than: 小于
  3. less_than_or_equals: 小于等于
  4. greater_than: 大于
  5. greater_than_or_equals: 大于等于
  6. not_equals: 不等于
  7. string_equals: 字符串相等
  8. length_equals: 长度相等
  9. length_greater_than: 长度大于
  10. length_greater_than_or_equals: 长度大于等于
  11. length_less_than: 长度小于
  12. length_less_than_or_equals: 长度小于等于
  13. contains: 预期结果是否被包含在实际结果中
  14. contained_by: 实际结果是否被包含在预期结果中
  15. type_match: 类型是否匹配
  16. regex_match: 正则表达式是否匹配
  17. startswith: 字符串是否以什么开头
  18. endswith: 字符串是否以什么结尾
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值