接口性能测试---locust脚本编写(一)
本文分享自天翼云开发者社区《接口性能测试---locust脚本编写(一)》,作者:丁****乐
一、安装
locust是用python编写的一款开源接口性能测试工具,以python3为例,直接使用pip安装即可,pip3 install locust。安装完成之后可使用locust --version查看对应的版本。

二、脚本编写
通过编写python脚本模拟用户行为进行性能测试,locust python脚本一种比较常见的写法是将脚本分成三部分,第一部分进行相关导入、第二部分进行用户行为定义,第三部分进行用户定义。以一个例子进行讲解

首行进行了包导入,导入了常用的类、装饰器和函数。
Behave定义了进行用户行为定义,声明了两个操作,一个是get请求,一个是post请求。
TestUser定义了用户,tasks是用户要操作的行为,wait_time是用户行为之间的间隔时间,host是服务地址(可以不在这里填写,后面进行讲解)。
1、用户行为定义
类定义:需要定义继承自TaskSet的类,其他的还可以有SequentialTaskSet,且该类不可以重写__init__方法;
行为定义:用函数进行用户行为定义,该函数用task装饰器进行装饰,task标识任务权重,值越大权重越大。可以定义多个函数,模拟多个行为。self.client表示当前用户,可以通过self.client进行各种请求操作。
1)请求发送
self.client本质上是一个requests.Session对象,支持常见的请求方法,如get/post/put/delete。涉及header,cookie,请求参数的处理等请参考python requests库。
2)断言设置
locust默认2XX的返回状态码是正确响应,如需自定义断言设置可通过在请求中设置catch_resoponse=True捕获返回值进行处理,对返回值做校验后调用success和failure函数标记响应结果是否正确。如下,只有当返回状态码是302的时候认为测试结果正确,否则提示status error错误

3)预处理函数
on_start函数是预留的用于进行初始化操作的函数,可以根据需要进行定义,该函数只有在第一次运行的时候才会进行调用。比较常见的如登录操作,关闭https证书校验等
2、用户定义
定义用户类需要继承HttpUser或者FastHttpUser;
tasks属性是一个列表,用于定义用于行为,可以将定义好的用户行为类加进去;
wait_time是只用户两个请求之间的时间间隔,常用的函数有随机时间间隔between,固定时间间隔constant;
host用于指定被测服务地址,可在脚本中进行设置,也可以在脚本运行时再设置;
编写完成之后可以通过locust -f script_name.py命令运行调试,通过http://loccalhost:8089打开默认的web服务。
接口性能测试---locust脚本编写(一)的更多相关文章
- Locust性能测试1 脚本编写与运行
按照官网的quickstart编写脚本并运行 1 编写脚本 2 locust -f filepath 启动locust 3 浏览器打开localhost:8089,设置并发用户数和每秒启动用户数 ...
- Loadrunner Webservice接口性能测试脚本编写优化总结
本文主要介绍使用Loadrunner Webservice接口性能测试脚本编写及优化总结. 1.Webservice协议脚本编写流程 下面介绍使用Loadrunner 11调用Webservice接口 ...
- loadrunner 接口性能脚本编写(Get请求和Post请求)
前段时间接触了一下loadrunner的接口性能测试,然后尝试了一下手动编写脚本,毕竟录制这种东西,不是每次都能通的,而且录制下来的脚本,通常是有很多其他杂七杂八的请求夹杂在中间,没有达到真正的压测接 ...
- Locust 接口性能测试 - 转载一 (后期熟悉实践自己出一套完整的)
转载大佬 ,.. 另外一篇:https://www.cnblogs.com/imyalost/p/9758189.html记录一下接口性能测试的学习 先熟悉一下概念: Locust是使用Pytho ...
- 性能测试二十九:Dubbo框架测试脚本编写
测试脚本编写 新建一个folder命名为lib,用于存放依赖包 把以下jar全部拷进lib下,并build path 找开发要 真正要测试的以jar包形式存在的代码的类, 打开看一下 放到lib并bu ...
- 性能测试学习第九天_脚本编写以及controller场景
创建java脚本 环境配置: 安装jdk(lr11最高支持java1.6) 配置环境变量 在lr选择java Vuser协议 脚本结构: 一般在init中编写初始化脚本,在action中编写业务流程, ...
- Jmeter Web 性能测试入门 (四):一个小实例带你学会 Jmeter 脚本编写
测试场景: 模拟并发100个user,在TesterHome 站内搜索VV00CC 添加线程组 添加HTTP信息头管理器 添加HTTP Sampler 填写HTTP Sampler中的信息 添加监听器 ...
- [性能测试] locust学习-基础篇
在本文中,我将介绍一个名为Locust的性能测试工具.我将从Locust的功能特性出发,结合实例对Locust的使用方法进行介绍. 概述 Locust主要有以下的功能特性: 在Locust测试框架中, ...
- LoadRunner脚本编写(转)
性能测试工程师要懂代码么?答案是必须的.好多测试员认为在loadrunner中编写脚本很难很牛X ,主要是大多测试人员并未做过开发工作,大学的那点程序基础也忘记的差不多了.还有非计算机专业出身的测试员 ...
- Jmeter+jenkins接口性能测试平台实践整理(一)
最近两周在研究jmeter+Jenkin的性能测试平台测试dubbo接口,分别尝试使用maven,ant和Shell进行构建,jmeter相关设置略. 一.Jmeter+jenkins+Shell+t ...
随机推荐
- 介绍 GGUF-my-LoRA
随着 llama.cpp 对 LoRA 支持的重构,现在可以将任意 PEFT LoRA 适配器转换为 GGUF,并与 GGUF 基础模型一起加载运行. 为简化流程,我们新增了一个名为 GGUF-my- ...
- Linux管道命令
Linux中常用文件字符串分析的命令 在linux中文件管理与系统管理的方面,经常会用到要从一个文件中或者一长串字符串中提取你所需要的数据,或者某些字段来进行查看或者分析,作为一个初级linux小菜鸟 ...
- Java 并发编程实战学习笔记——串行任务转并行任务
package net.jcip.examples; import java.util.Collection; import java.util.List; import java.util.Queu ...
- MySQL 8.0 为什么会放弃查询缓存?
什么是查询缓存? 查询缓存就是将一次查询结果存储在内存中,假如下一次查询结果在内存中,就直接在内存中读取. 设计初衷 当然是提高性能,通过缓存来减少解析器.优化器.存储引擎的执行时间. MySQL查询 ...
- 使用 httputils + protostuff 实现高性能 rpc
1.先讲讲 protostuf protostuf 一直是高性能序列化的代表之一.但是用起来,可难受了,你得先申明 protostuf 配置文件,并且要把这个配置文件转成类.所以必然要学习新语法.新工 ...
- 【第2章】matlab程序设计基础
matlab语言的常量与变量 matlab语言的变量命名规则 由一个字母引导,后面可以为其他字符. 区分大小写 如Abc ≠ ABc matlab的保留常量 以下为系统保留常量,自己定义的变量不能与他 ...
- go编译可以指定os和arch
是的,Go 编译器支持通过环境变量来指定目标操作系统(OS)和架构(Arch).这允许你为不同的平台交叉编译 Go 程序.你可以使用 GOOS 和 GOARCH 环境变量来指定目标系统. 例如,如果你 ...
- docker-entrypoint.sh 文件的用处
参考出处很多著名库的 Dockerfile 文件中,通常都是 ENTRYPOINT 字段会是这样: ENTRYPOINT ["docker-entrypoint.sh"]这里我们参 ...
- Netty系列之Netty安全性
1.1. 严峻的安全形势 1.1.1. OpenSSL Heart bleed漏洞 2014年上半年对网络安全影响最大的问题就是OpenSSL Heart bleed漏洞,来自Codenomicon和 ...
- 如何控制bean的加载顺序?
写在前面 springboot遵从约定大于配置的原则,极大程度的解决了配置繁琐的问题.在此基础上,又提供了spi机制,用spring.factories可以完成一个小组件的自动装配功能. 在一般业务场 ...