httprunner 3.x 入门 -2 入门案例

2022-04-12 14:34:29 浏览数 (1)

在学pytest的过程中,我一直搞不懂为什么变量引用用变量名或{变量名}引用,方法用

代码语言:javascript复制
from string import Template
...
var_data = Template("access_token is $access_token")
# sub_string的内容可以读取yaml文件,然后转换成string,即dumps
sub_string = {"access_token": "abcdefg12345"}
var_data.safe_substitute(sub_string)
...

完成变量引用。

我们继续来学习httprunner3.x版本

上一讲我们先介绍了httprunner的必须知道的命令。

现在我们来通过案例,进一步了解httprunner

我们先打开fiddler,然后用postman分别跑获取access_token和创建标签的接口。分别选择fiddler抓到的两个接口的包,然后选择导出

格式选择HTTPArchive v1.2,这样保存下的就是.har文件

然后把这两个.har文件复制到项目har文件夹下,并在pycharm的终端(Terminal)中先到har文件夹目录,然后执行命令

代码语言:javascript复制
har2case 文件名.har -2y

也就是把har文件转换成yaml文件,如下图

然后我们把get_acc.yml内容进行修改,改成我们做接口框架时要用的样子

1、删掉多余的内容如headers

2、用例数据全部采用引用

代码语言:javascript复制
config:
    name: testcase description
    variables:
        appid: wx4d8f7de320aca501
        grant_type: client_credential
        secret: d096e22047235cad799d917a517c6246
    verify: False
    base_url: https://api.weixin.qq.com
teststeps:
-   name: /cgi-bin/token
    request:
        method: GET
        params:
            appid: $appid
            grant_type: $grant_type
            secret: $secret
        url: /cgi-bin/token
    extract:
        access_token: content.access_token
    validate:
    -   equals:
        - status_code
        - 200
    -   eq:
        - body.expires_in
        - 7200

然后通过hrun get_acc.yml执行

可以看到用例仍然成功了。

一般来说,我们测试用例的结构为:

代码语言:javascript复制
config:  #配置
   name  #名称
   variables  #全局变量
   verify  #https协议
   base_url  #环境变量
teststeps  #步骤
   name  #步骤名称
   request  #请求
      headers   #请求头
      method   #请求方式
      params   #请求参数
      url   #请求路径
      cookie   #cookie信息
      json   #用于发送http请求正文
      data   #用于发送http请求正文
extract   #提取:通过content或body,很少用正则
validate   #断言

直接执行hrun 文件名.yml不打印返回值,加个-s即可

代码语言:javascript复制
hrun -s 文件名.yml

上面我们实现了单个接口用例,但是我们工作中要做很多冒烟测试,那怎么把用例关联呢?

我们先对文件进行分类

1、把.har文件放到har文件夹

2、新建api文件夹,把我们写好的变量用例放到里面

3、把测试用例文件放到testcases文件夹

4、新建testsuites文件夹,用于存放冒烟、接口关联用例

代码:

代码语言:javascript复制
# api/get_access_token.yml

config:
    name: 获取access_token
    variables:
        appid: wx4d8f7de320aca501
        grant_type: client_credential
        secret: d096e22047235cad799d917a517c6246
    verify: False
    base_url: https://api.weixin.qq.com
teststeps:
-   name: /cgi-bin/token
    request:
        method: GET
        params:
            appid: $appid
            grant_type: $grant_type
            secret: $secret
        url: /cgi-bin/token
    extract:
        access_token: content.access_token

代码语言:javascript复制
# api/select_tags.yml

config:
    name: 查询标签
    variables:
        access_token: ${access_token}
    verify: false
    base_url: https://api.weixin.qq.com
teststeps:
-   name: /cgi-bin/tags/get
    request:
        method: GET
        params:
            access_token: ${access_token}
        url: /cgi-bin/tags/get

代码语言:javascript复制
# testcases/get_access_token_case.yml

config:
    name: get_access_token
teststeps:
-   name: /cgi-bin/token
    api: api/get_access_token.yml
代码语言:javascript复制
# testcases/select_tags_case.yml

config:
    name: select tags
teststeps:
-   name: /cgi-bin/token
    api: api/get_access_token.yml
    export:
        - access_token
-   name: /cgi-bin/tags/get
    api: api/select_tags.yml

代码语言:javascript复制
# testsuites/tags_suits.yml

config:
    name: 查询标签
teststeps:
-   name: /cgi-bin/token
    testcase: testcases/get_access_token_case.yml
-   name: /cgi-bin/tags/get
    testcase: testcases/select_tags_case.yml

testsuits一般用于接口关联的冒烟测试。

需要注意的是查询标签需要传access_token,我们在api文件夹下的select_tags.yml写的全是变量。如下图:

提取变量在测试用例的export关键字里,这样写就能把返回的access_token取出来了

这里需要强调一下:

1、文件夹的名不要写错了,在httprunner里文件夹名是有要求的

2、testsuites文件夹下调用的用例里不能有断言validate。

不然就会各种报错……

0 人点赞