前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >全网最全httpruner自动化测试教程 全是干货

全网最全httpruner自动化测试教程 全是干货

作者头像
一只
发布2023-08-10 15:58:53
2780
发布2023-08-10 15:58:53
举报

一、安装

1.1python环境

建议安装3.x版本,贴一个国内镜像地址,可以自行选择 淘宝镜像链接

1.2httprunner安装

执行以下命令pip install httprunner默认安装最新版本,笔者安装的2.4的版本,可以使用这条命令指定版本pip install httprunner==版本号

安装之后使用hrun -V查看版本号,打印版本号则安装成功

httprunner查看版本
httprunner查看版本

二、脚手架介绍

2.1 安装脚手架

2.x版本执行hrun --startproject 项目名称 3.x和4.x请执行httprunner --startproject 项目名称

在这里插入图片描述
在这里插入图片描述

2.2脚手架项目介绍

脚手架类似vue的脚手架,默认给了一个最基本的项目格式

文件/夹

意义

api

独立定义的接口 yml/json 文件

reports

执行后自动生成的测试报告文件

testcases

测试用例文件

testsuites

测试用例集文件

.env

定义环境变量

.gitgnore

定义托管到git时忽略的文件

debugtalk.py

编写外部处理函数,可以在用例子中被调用

三、项目实践

3.1 api文件实践

默认的yml如下

代码语言:javascript
复制
name: demo api # 接口名称
variables: # 这个文件下的全局参数
    var1: value1 # 自定义的参数 自定义的key-value模式 在后面可以引用 ${key}
    var2: value2
request: #一个请求
    url: /api/path/$var1 # ip+端口+地址
    method: POST # 请求方法 get post delet put ...
    headers: # 定义请求头
        Content-Type: "application/json" # 请求头参数
    json: # post请求的body
        key: $var2
validate: # 断言request的请求响应状态是否为200
    - eq: ["status_code", 200]

这里我们自定义一个,此接口是笔者的网站接口,读者需要自行准备接口,直接用百度的也可以 login.yml文件

代码语言:javascript
复制
name: 登录接口-正向用例
variables: # 全局变量 只能在这个yml中使用
    password: zz102073
    id: 102073
    login_url: http://47.92.52.220:8088/login/login
base_url: ip+端口
request: # 参数信息
    # 可以使用全局变量写法
    # url: $login_url
    # url: /login/login
    url: /login/login
    # 调用py的函数
    # User-Agent: ${get_user_agent()}
    method: POST
    headers:
        Content-Type: "application/json"
    json:
        id: $id # 环境变量 在.env文件中创建 标准写法为大写 调用格式${ENV(变量名)}
        password: $password # 全局变量
validate: # 断言使用
    - eq: ["status_code", 200]
#    - {"check":"status_code","comparator":"eq","expect":200}
#    - {"check":"content","comparator":"contains","expect":"msg"}

.env文件

代码语言:javascript
复制
ID=2021102073
PASSWORD=zz102073

debugtalk.py

代码语言:javascript
复制
def get_user_agent():
    user_agent = ["测试1","测试2","测试3"]
    return random.choice(user_agent)

可以看见一些新的用法

  1. 定义了base_url之后可以在后文中使用
  2. ${ENV(变量名)}可以引用全局变量
  3. 如果要使用自定义的py函数,直接${get_user_agent()}就可以,

执行hrun api/login.yml,后面是相对路径的地址,可以看见打印了相关信息

在这里插入图片描述
在这里插入图片描述

测试报告

在这里插入图片描述
在这里插入图片描述

3.2 testcase场景串联案例

实际测试中,很多接口可能要使用前面接口的参数,这里演示一个

代码语言:javascript
复制
config:
    name: "获取题目信息配置"
# 就近覆盖 不以api中为基准
base_url: ip+端口

teststeps:
-
    name: 登录
    api: api/login.yml
    extract:
        #会覆盖后面api中的token
        - token: headers.Authorization
-
    name: 获取题目列表信息
    api: api/get_problem_list.yml

注意

  1. 上面的base_url会就近覆盖
  2. teststeps下面的每一个短横线就是一个api文件中的接口
  3. extract表示下面的参数会保存下来,在获取题目列表信息的接口中会引用他,如下
在这里插入图片描述
在这里插入图片描述

同样执行hrun 相对路径可以得到测试报告

3.3 testsuites案列

login.yml

代码语言:javascript
复制
config:
    name: "登录接口套件"
    base_url: "http://47.92.52.220:8088"

testcases:
-
    name: 登录接口套件
    testcase: testcases/login.yml
    parameters:
        #方式一 直接在当前文件添加
#        - title-id-password-status_code:
#              - ["正常登录","2021102073","zz102073",200]
#              - ["密码错误","2021102073","z102073",200]
        #方式二 用csv文件 默认全部是str类型,数据转换有问题
#        - title-id-password-status_code: ${P(datas/account.csv)}
        #方式三 最佳实践 使用函数
        - title-id-password-status_code: ${get_accounts()}

代码解释: 介绍了三种引入测试用例的方法,因为每个接口的测试用例可能存在几十个,parameters表示下面的是参数,用短横线分割

方式一 直接在当前文件添加,一眼懂,不解释 方式二 引用csv文件 默认全部是str类型,如果你的数据是int或者其他类型会报错 这里在项目里新建了一个data目录,一个account.cvs文件,这个格式可以引用${P(datas/account.csv)}

代码语言:javascript
复制
title,id,password,status_code
正常登录,2021102073,zz10273,200
密码错误,2021102073,z10273,200

方式三 使用py代码,实际操作中应该使用代码生成测试用例

代码语言:javascript
复制
def get_accounts():
    # 嵌套字典的列表 可以通过程序自动生成
    accounts = [
        {"title":"正常登录","id":"2021102073","password":"zz102073","status_code":200}
    ]
    return accounts

四、补充说明

fidder使用 如果有大量接口需要自动化测试,手动编写yml文件十分繁琐,可以使用抓包工具得到har文件,通过har2case 目标文件 -2y将har文件转换为yml文件

debug打印 可以使用hrun 目标文件 --log-level debug将打印级别调为debug模式,看见更多信息

httprunner官方 https://httprunner.com/docs/quickstart/详细可以阅读官方文件,以及更多断言写法

补充说明:创作不易,各位看官请点个赞或者收藏,文中若有bug请评论,以便及时修正

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-07-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、安装
    • 1.1python环境
      • 1.2httprunner安装
      • 二、脚手架介绍
        • 2.1 安装脚手架
          • 2.2脚手架项目介绍
          • 三、项目实践
            • 3.1 api文件实践
              • 3.2 testcase场景串联案例
                • 3.3 testsuites案列
                • 四、补充说明
                相关产品与服务
                腾讯云服务器利旧
                云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档