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

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

一、安装

1.1python环境

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

淘宝镜像链接

1.2httprunner安装

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

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

二、脚手架介绍

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

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文件

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文件

ID=2021102073
PASSWORD=zz102073

debugtalk.py

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场景串联案例

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

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

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)}

title,id,password,status_code
正常登录,2021102073,zz10273,200
密码错误,2021102073,z10273,200

方式三

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

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/详细可以阅读官方文件,以及更多断言写法

相关文章
|
9天前
|
缓存 测试技术 Apache
告别卡顿!Python性能测试实战教程,JMeter&Locust带你秒懂性能优化💡
告别卡顿!Python性能测试实战教程,JMeter&Locust带你秒懂性能优化💡
22 1
|
1月前
|
自然语言处理 机器人 Python
ChatGPT使用学习:ChatPaper安装到测试详细教程(一文包会)
ChatPaper是一个基于文本生成技术的智能研究论文工具,能够根据用户输入进行智能回复和互动。它支持快速下载、阅读论文,并通过分析论文的关键信息帮助用户判断是否需要深入了解。用户可以通过命令行或网页界面操作,进行论文搜索、下载、总结等。
43 1
ChatGPT使用学习:ChatPaper安装到测试详细教程(一文包会)
|
1月前
|
缓存 测试技术 Apache
告别卡顿!Python性能测试实战教程,JMeter&Locust带你秒懂性能优化💡
【10月更文挑战第1天】告别卡顿!Python性能测试实战教程,JMeter&Locust带你秒懂性能优化💡
60 4
|
3月前
|
存储 Ubuntu 安全
ROS2教程02 ROS2的安装、配置和测试
本文是关于ROS2(机器人操作系统2)的安装、配置和测试的教程。内容包括使用一键安装脚本快速安装ROS2 Humble版,手动安装步骤,设置语言环境、添加软件源、更新软件包、安装ROS2桌面版和开发工具,配置ROS2环境,创建工作空间,配置ROS2领域以避免网络冲突,以及如何删除ROS2。此外,还包括了测试ROS2是否安装成功的两个案例:基本的Topic通信测试和使用Turtlesim演示程序。适用于Ubuntu 22.04操作系统。
268 1
ROS2教程02 ROS2的安装、配置和测试
|
2月前
|
缓存 测试技术 Apache
告别卡顿!Python性能测试实战教程,JMeter&Locust带你秒懂性能优化💡
【9月更文挑战第5天】性能测试是确保应用在高负载下稳定运行的关键。本文介绍Apache JMeter和Locust两款常用性能测试工具,帮助识别并解决性能瓶颈。JMeter适用于测试静态和动态资源,而Locust则通过Python脚本模拟HTTP请求。文章详细讲解了安装、配置及使用方法,并提供了实战案例,帮助你掌握性能测试技巧,提升应用性能。通过分析测试结果、模拟并发、检查资源使用情况及代码优化,确保应用在高并发环境下表现优异。
76 5
|
3月前
|
测试技术 开发工具 虚拟化
iOS自动化测试方案(一):MacOS虚拟机保姆级安装Xcode教程
这篇文章提供了一份保姆级的教程,指导如何在MacOS虚拟机上安装Xcode,包括环境准备、基础软件安装以及USB扩展插件的使用,以实现iOS自动化测试方案的第一步。
110 0
iOS自动化测试方案(一):MacOS虚拟机保姆级安装Xcode教程
|
3月前
|
Java 测试技术 Maven
Junit单元测试 @Test的使用教程
这篇文章是一个关于Junit单元测试中`@Test`注解使用的教程,包括在Maven项目中添加Junit依赖、编写带有@Test注解的测试方法,以及解决@Test注解不生效的常见问题。
|
4月前
|
测试技术 API Android开发
《手把手教你》系列基础篇(九十七)-java+ selenium自动化测试-框架设计篇-Selenium方法的二次封装和页面基类(详解教程)
【7月更文挑战第15天】这是关于自动化测试框架中Selenium API二次封装的教程总结。教程中介绍了如何设计一个支持不同浏览器测试的页面基类(BasePage),该基类包含了对Selenium方法的二次封装,如元素的输入、点击、清除等常用操作,以减少重复代码。此外,页面基类还提供了获取页面标题和URL的方法。
104 2
|
4月前
|
存储 Web App开发 Java
《手把手教你》系列基础篇(九十五)-java+ selenium自动化测试-框架之设计篇-java实现自定义日志输出(详解教程)
【7月更文挑战第13天】这篇文章介绍了如何在Java中创建一个简单的自定义日志系统,以替代Log4j或logback。
293 5
|
4月前
|
Web App开发 XML Java
《手把手教你》系列基础篇(九十六)-java+ selenium自动化测试-框架之设计篇-跨浏览器(详解教程)
【7月更文挑战第14天】这篇教程介绍了如何使用Java和Selenium构建一个支持跨浏览器测试的自动化测试框架。设计的核心是通过读取配置文件来切换不同浏览器执行测试用例。配置文件中定义了浏览器类型(如Firefox、Chrome)和测试服务器的URL。代码包括一个`BrowserEngine`类,它初始化配置数据,根据配置启动指定的浏览器,并提供关闭浏览器的方法。测试脚本`TestLaunchBrowser`使用`BrowserEngine`来启动浏览器并执行测试。整个框架允许在不同浏览器上运行相同的测试,以确保兼容性和一致性。
93 3

热门文章

最新文章