1,用例格式

通常一个脚本文件里面有如下模块:

- config

- test

- test

即:全局配置、用例、用例

config模块里面定义的是整个文本测试集的变量,即全局变量

test模块里面定义的是具体接口请求,下面看个具体例子

 

2,举个例子

以某快递查询接口为例,新建一个yaml文件,命名为test_post_api.yaml

httprunner进行接口测试-参数化
- config:
    name: test kuaidi100 api
    request:
        base_url: http://www.kuaidi100.com
            
- test:
    name: test kuaidi100 one
    request:
        url: /query
        method: GET
        params:
            type: huitongkuaidi
            postid: 350757858666
httprunner进行接口测试-参数化

yaml格式类似与json,可以看成是优雅的json。yaml中,跟python一样,也是空格缩进表示同一层级,不过没有python那么严格,只要缩进空格数一样就是同一级,“-”python读取出来是list,“#”用来注释,更多语法可以去官网学习。

config模块

name  本用例集名称

request  请求全局变量,包括base_url(公共host)、headers等

base_url  全局公共host,也可以不定义,用例中写全url即可

以上全局配置,除了name,其他都是非必要的,根据需要添加。

test模块

name  本条测试用例的名字

request  请求体

url  请求的路径,由于全局变量已经定义好host,这里就直接填写后面的路由即可

method  请求方式

params  请求参数

示例是某快递查询接口,脚本初步写好,接下来开始测试吧,怎么测试脚本?

打开cmd,进入到该文件目录,执行命令hrun test_post_api.yaml回车即可。

httprunner进行接口测试-参数化 

成功,cool,可以看到一条用例测试通过,而且还在脚本所在目录生成了report文件夹,生成的测试报告就放在里面,报告名字为测试时间戳。报告长这样,还是蛮清爽的。

httprunner进行接口测试-参数化

点击log,可以查看详细日志

httprunner进行接口测试-参数化

3,断言

虽然运行成功,但我们无法判断请求的结果与我们的预期是否一致。这个时候就需要断言。httprunner中断言很简单,通过在用例里面增加validate参数实现,如下:

httprunner进行接口测试-参数化

那么怎么知道如何定义被断言的数据呢?即上图中的content.message等。

浏览器执行该接口,其返回值是字典(如下,这些字典数据存在content变量里面),可以直接通过content后面接“.key”获取value值,再判断与我们给出的值是否相等,以此判断用例是否通过。如:content.message断言值设置为“ok”,如果其对应的value等于“ok”,就表示通过。

{"message":"ok","nu":"350757858666","ischeck":"1","condition":"F00","com":"huitongkuaidi","status":"200"......

加好想要的断言后,再次执行用例,打开报告查看日志,可以看到,日志里面清楚的记录了所以的断言结果。

httprunner进行接口测试-参数化 

4,参数传递

在做接口测试时,经常需要将上一个接口返回的结果,传入到下一个接口中当着参数,httprunner中使用extration参数来进行参数的传递。由于演示接口只有一个,切接口返回值里面有运单号,就直接拷贝了上面的用例作为接受参数的用例。故可以将第一个用例返回值中的运单号提取出来,传入第二个用例当做参数,只需在前面加$就可以引用该参数,look

httprunner进行接口测试-参数化
- config:
    name: test kuaidi100 api
    # parameters:
        # - user_id: [1001, 1002, 1003, 1004]
    request:
        base_url: http://www.kuaidi100.com
            
- test:
    name: test kuaidi100 one
    request:
        url: /query
        method: GET
        params:
            type: huitongkuaidi
            postid: 350757858666
    validate:
        - eq: [status_code, 200]
        - eq: [content.message, "ok"]
        - eq: [content.com, "huitongkuaidi"]
        - eq: [content.nu, "350757858666"]        
    extract:
        - postid: content.nu
        
- test:
    name: test kuaidi100 two
    request:
        url: /query
        method: GET
        params:
            type: huitongkuaidi
            postid: $postid
    validate:
        - eq: [status_code, 200]
        - eq: [content.message, "ok"]
        - eq: [content.com, "huitongkuaidi"]
        - eq: [content.nu, "350757858666"]     
httprunner进行接口测试-参数化

相关文章: