前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >httprunner 3.x 入门 -2 入门案例

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

作者头像
孟船长
发布2022-04-12 14:34:29
3130
发布2022-04-12 14:34:29
举报

在学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。

不然就会各种报错……

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-03-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 自动化测试实战 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档