前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >httpruner自动化测试教程 | 技术创作特训营第一期

httpruner自动化测试教程 | 技术创作特训营第一期

原创
作者头像
一只
发布2023-08-09 15:28:52
发布2023-08-09 15:28:52
27000
代码可运行
举报
运行总次数:0
代码可运行

@TOC

一、安装

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如下

代码语言:yaml
复制
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文件

代码语言:yaml
复制
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文件

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

debugtalk.py

代码语言:python
代码运行次数:0
复制
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场景串联案例

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

代码语言:yaml
复制
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

代码语言:yaml
复制
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)}

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

方式三

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

代码语言:python
代码运行次数:0
复制
def get_accounts():
    # 嵌套字典的列表 可以通过程序自动生成
    accounts = [
        {"title":"正常登录","id":"2021173","password":"zz2073","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请评论,以便及时修正

【选题思路】

在学习httprunenr得时候发现互联网上得资料并不是那么,或者说不够详细,总是遇见一些问题无法解决,虽然受众群体比较少,还是想分享出来,希望对有需要得伙伴有所帮助

【创作提纲】

  1. httprunner是什么
  2. httprunner怎么安装 需要什么环境
  3. 脚手架的项目结构如何
  4. 如何使用脚手架
  5. 扩展使用抓包工具

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、安装
    • 1.1python环境
    • 1.2httprunner安装
  • 二、脚手架介绍
    • 2.1 安装脚手架
    • 2.2脚手架项目介绍
  • 三、项目实践
    • 3.1 api文件实践
    • 3.2 testcase场景串联案例
    • 3.3 testsuites案列
  • 四、补充说明
  • 【选题思路】
  • 【创作提纲】
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档