前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >HttpRunner项目中使用

HttpRunner项目中使用

作者头像
Criss@陈磊
发布2019-08-02 11:10:22
2.2K0
发布2019-08-02 11:10:22
举报
文章被收录于专栏:测试技术圈测试技术圈

介绍如何在项目中使用 HttpRunner 框架,从搭建框架目录,介绍 每个文件的功能,API,变量引用,提取token,断言方法

创建项目文件及虚拟环境:

代码语言:javascript
复制
mkdir http_demo  # 创建文件夹
cd http_demo     # 切换到 http_demo 目录下
pipenv install   # 安装 虚拟环境
pipenv shell     # 启动虚拟环境
pip install httprunner  # 安装 httprunner 库
pip show httprunner     # 查看 httprunner 版本
hrun -V                 # httprunner 检查版本

使用 hrun 命令创建项目结构,

代码语言:javascript
复制
(http_demo-Zx9yvHhM) hrun --startproject demo   # 创建项目命令
Start to create new project: demo               # 启动创建 
CWD: D:\Code_py\http_demo                       # 创建项目位置
                                                 
created folder: demo                            # 创建的文件名称
created folder: demo\api                        # 接口API文件
created folder: demo\testcases                  # 测试用例文件
created folder: demo\testsuites                 # 测试套件
created folder: demo\reports                    # 测试报告目录
created file: demo\debugtalk.py                 # python 调试文件
created file: demo\.env                         # 环境配置文件

介绍使用 yaml 格式文件当做测试用例

githunb 用例示例

代码语言:javascript
复制
- config:
    name: "create user and check result."  # 配置名称
    id: create_user
    base_url: "http://127.0.0.1:5000"      # 基础url
    variables:                             # 变量
        uid: 9001
        device_sn: "TESTCASE_CREATE_XXX"
    output:                                # 输出
        - session_token

- test:                                   # 用例1
    name: setup and reset all (override) for $device_sn.  # 名称
    testcase: testcases/setup.yml         # api 文件目录
    output:                               # 输出 
        - session_token

- test:                                   # 用例2
    name: create user and check result.
    variables:
        token: $session_token
    testcase: testcases/deps/check_and_create.yml

在网上找到练习的接口:

代码语言:javascript
复制
登录接口https://www.apiopen.top/login?key=00d91e8e0cca2b76f515926a36db68f5&phone=13594347817&passwd=123456查询信息接口 https://www.apiopen.top/findStatistics?appKey=00d91e8e0cca2b76f515926a36db68f5

项目结构,testcases 是测试用例目录,api 是存放接口文件

编写 登录 login.yaml 接口

代码语言:javascript
复制
name: "登录"

variables:
    username: $username
    password: $password
    key: $key

request:
    url: /login?key=$key&phone=$username&passwd=$password
    method: POST
    # headers:
    #     Content-Type: "application/json"
    # 请求参数是 json 的 写法如下
    # json: {"key": $key,"phone": $username,"passwd": $password}

编写 查询信息 info.yaml 接口

代码语言:javascript
复制
name: "查询信息"

variables:
    token: $token

request:
    url: /findStatistics?appKey=$token
    method: GET
    # headers: 
        # Content-Type: "application/json"
    # 请求参数是 json 的 写法如下
    # json:  {"appKey":$token}

编写测试接口 test_login.yaml

代码语言:javascript
复制
- config:
    name: "登录后查询信息"
    variables:
        username: ${ENV(username)}
        password: ${ENV(password)}
        key: ${ENV(key)}

    base_url: ${ENV(base_url)}
    output:
        - token

- test:
    name: "登录获取 token"
    api: api/login.yaml
    variables:
        username: $username
        password: $password
        key: $key

    extract:
        - token: content.data.key

    validate:
        - eq: ["status_code", 200] # 返回状态检查
        - eq: ["content.data.phone", $username] # 判断返回内容中是否有这个账号
        - eq: [content.msg, "成功!"]  #返回 content 中msg = 操作成功  需要定位到具体元素下标
        - contains: [content.msg, "成功!"]  # 定位到具体元素下标,关键字进行匹配

- test:
    name: "查询信息"
    api: api/info.yaml
    variables: 
        token: $token
    
    validate:
        - eq: ["status_code", 200] # 返回状态检查
        - eq: [content.msg, "成功!"]  #返回 content 中msg = 操作成功  需要定位到具体元素下标
        - contains: [content.msg, "成功!"]  # 定位到具体元素下标,关键字进行匹配

执行 测试用例

代码语言:javascript
复制
hrun testsuites\test_login.yaml --log-level debug

测试用例执行后的在 resports 目录中查看 结果:

login 接口用例的详细结果:

info 接口用例详细结果:

exteact 提取信息,用于后续接口的调用,在cmder 中能看到 提取出的 token信息

断言介绍:

一般项目中使用 -eq 精确断言 -contains 模糊断言

login 登录返回的信息

data.key 是获取到 key 相当于是 token 用户后续接口使用

code 200 是接口返回的状态

msg 成功 接口反馈的 消息

data 里面是详细信息,标识用户登录的身份信息

代码语言:javascript
复制
validate:
    # 返回状态检查
    - eq: ["status_code", 200] 
    # 判断返回内容中是否有这个账号
    - eq: ["content.data.phone", $username] 
    #返回 content 中msg = 成功  需要定位到具体元素下标
    - eq: [content.msg, "成功!"]  
     # 定位到具体元素下标,关键字进行匹配
    - contains: [content.msg, "成功!"] 

以上就是个人在项目中使用 httprunner 框架的经验,接口请求在 api 文件中编写对应的格式,测试用例,在testcases 文件中存放,测试套件(用户流程性的测试)存放在 testsuites 文件中

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

本文分享自 质问 微信公众号,前往查看

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

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

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