HttpRunner2.X开源接口测试框架学习(六):参数化设置

前言

在HttpRunner中,测试用例组织主要基于三个概念:

测试用例集(testsuite):对应一个文件夹,包含单个或多个测试用例(YAML/JSON)文件

测试用例(testcase):对应一个YAML/JSON文件,包含单个或多个测试步骤

测试步骤(teststep):对应YAML/JSON文件中的一个test,描述单次接口测试的全部内容,包括发起接口请求、解析响应结果、校验结果等

 

问题

在自动化测试中,经常会遇到如下场景:

测试搜索功能,只有一个搜索输入框,但有10种不同的类型的搜索关键字,此时我们需要对测试数据进行参数化。

 

参数化设置应用

方式一:

1、在httprunner中,参数列表需要定义在testsuite中。以百度搜索为例。在testsuite中定义搜索的关键字如下:

 

 2、在yml测试用例中调用testsuite中设置的参数字段

 

 3、运行测试用例,可以在报告中看到按照设置的参数进行了三次查询

 

方式二:利用csv文件进行参数化

P(文件路径)  是httprunner内置的解析csv文件的函数

1、csv文件搜索关键字配置如下:

 

 2、testcases/2021/0705/test_demo_01.yml中代码如下:

#通过csv文件实现参数化
- config:
    name: '验证百度搜索是否正确'
    base_url: 'https://www.baidu.com'
    output:
      - title

- test:
    name: '百度搜索请求'
    request:
      url: '/s'
      method: GET
      headers:
        User-Agent: 'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Mobile Safari/537.36'
        Accept: 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9'
        Accept-Encoding: 'gzip, deflate, br'
        Accept-Language: 'zh-CN,zh;q=0.9'
      params:
        wd: $searchword
    extract:
      title: <title>(.+?)</title>
    validate:
      - eq: ['status_code',200]
      - eq: [$title,$result]

 

3、测试套件中配置如下:

 备注:参数名称必须和 csv文件表头的名称一致

3、运行测试用例集中的test_demo_02.yml,可以在报告中看到按照设置的参数进行了三次查询

 

方式三:利用debugtalk.py实现参数化

Jmeter 、postman等工具可以获取 随机整数、顺序取值、随机字符串、随机手机号、身份证等,Httprunner中,只要你能用python创造出上述数据就可以放到httprunner中使用随机整数实现。

先要确定需要多少个随机整数作为参数化测试使用,因为在parameters中参数的个数是通过列表中的元素决定的。

1、debugtalk中按照需求编写获取随机数的函数

2、测试用例数据不变

3、测试套件中配置测试用例路径,调用debugtalk中的取随机数的函数即可

debugtalk定义顺序取值函数

 

debugtalk中定义生成指定长度的随机字符串的函数

 

debugtalk中定义获取随机手机号函数

choice()方法从指定序列中返回一个随机选择的元素。

sample()方法用于截取列表的指定长度的随机数

测试用例中需要以上函数,调用即可。

posted @ 2021-07-01 23:08  重走青春LV  阅读(219)  评论(0编辑  收藏  举报