httprunner学习16-locust性能测试
前言
HttpRunner 的 yaml 脚本文件,可以结合locust做性能测试
locust环境准备
安装完成 HttpRunner 后,系统中会新增locusts命令,但不会同时安装 Locust。
使用locusts -V查看时,会提示需要先安装locustio
C:\Users\dell>locusts -V
WARNING Locust is not installed, install first and try again.
install command: pip install locustio
使用 pip 安装 locustio 包
pip install locustio
查看locustio相关信息
C:\Users\dell>pip show locustio
Name: locustio
Version: 0.11.0
Summary: Website load testing framework
Home-page: https://locust.io/
Author: Jonatan Heyman, Carl Bystrom, Joakim Hamrén, Hugo Heyman
Author-email: UNKNOWN
License: MIT
Location: e:\python36\lib\site-packages
Requires: pyzmq, flask, gevent, requests, six, msgpack
Required-by:
关于locust相关的教程,可以查看前面写的系列https://www.cnblogs.com/yoyoketang/tag/locust/
脚本准备
在做压测之前,我们得保证单个脚本是可以正常运行的,比如我在本地搭建一个接口环境,信息如下
接口访问地址:/api/test/demo
请求方式:get
接口返回:
{
"code": 0,
"msg": "success!",
"datas": [{
"age": 20,
"create_time": "2019-09-15",
"id": 1,
"mail": "283340479@qq.com",
"name": "yoyo",
"sex": "M"
}, {
"age": 21,
"create_time": "2019-09-16",
"id": 2,
"mail": "123445@qq.com",
"name": "yoyo111",
"sex": "M"
}]
}
test_get_demo.yml脚本内容如下
- config:
name: logincase
variables: {}
# 上海悠悠,QQ交流群:750815713
- test:
name: get user info case1
request:
url: http://127.0.0.1:8000/api/test/demo
method: GET
headers:
Content-Type: application/json
User-Agent: python-requests/2.18.4
validate:
- eq: [status_code, 200]
- eq: [headers.Content-Type, application/json]
- eq: [content.datas.0.age, 20]
- eq: [content.datas.0.name, yoyo]
- eq: [content.datas.0.mail, 283340479@qq.com]
使用hrun 运行上面脚本,保证是可以正常运行的
locusts 启动
使用locusts -f 启动脚本文件
locusts -f test_get_demo.yml
D:\soft\untitled\projectdemo>locusts -f test_get_demo.yml
e:\python36\lib\site-packages\locust\core.py:17: MonkeyPatchWarning: Monkey-patching ssl after ssl has already been imported may lead to errors, including RecursionError on Python 3.6. It may also silently lead to incorrect behaviour on Python 3.7. Please monkey-patch earlier. See https://github.com/gevent/gevent/issues/1016. Modules that had direct imports (NOT patched): ['urllib3.contrib.pyopenssl (e:\\python36\\lib\\site-packages\\urllib3\\contrib\\pyopenssl.py)', 'urllib3.util (e:\\python36\\lib\\site-packages\\urllib3\\util\\__init__.py)'].
monkey.patch_all()
INFO Starting web monitor at *:8089
INFO Starting Locust 0.11.0
运行完成之后,可以看到locust的web页面在8089端口启动,接着在浏览器输入:http://localhost:8089/
即可访问
运行脚本
locust界面有2个输入框,Number of users to simulate
是用户并发数,Hatch rate (users spawned/second)
是每秒启动用户数
比如我设置10个并发,每秒启动10个用户,测试结果如下
从测试结果可以看出,实际上每秒并没有触发10个请求(RPS值不到10),因为在locustfile.py文件里面有个等待机制
- min_wait = 1000 最小等待时间1秒
- max_wait = 5000 最大等待时间5秒
把max_wait改成1000就可以达到 10 RPS了
locustfile.py
当启动locusts的时候,会在当前目录自动生成一个locustfile.py文件。这个才是locust的脚本文件
#coding: utf-8
import zmq
from locust import HttpLocust, TaskSet, task
from httprunner.task import LocustTask
class WebPageTasks(TaskSet):
def on_start(self):
self.test_runner = LocustTask(self.locust.file_path, self.client)
@task
def test_specified_scenario(self):
self.test_runner.run()
class WebPageUser(HttpLocust):
host = "http://127.0.0.1:8000"
task_set = WebPageTasks
min_wait = 1000
max_wait = 1000 # max_wait改成 1000了
file_path = "test_get_demo.yml"
使用locust执行locustfile.py脚本文件
locust -f locustfile.py
测试结果 RPS=9.9 接近10
httprunner学习16-locust性能测试的更多相关文章
- 【Python】模块学习之locust性能测试
背景 locust是一个python的第三方库,用于做性能测试,可使用多台机器同时对一台服务器进行压测,使用其中一台机器作为主节点,进行分布式管理 博主测试接口的时候一直是使用python脚本,后来有 ...
- Locust性能测试_先登录场景案例
前言 有很多网站不登录的话,是无法访问到里面的页面的,这就需要先登录了实现场景:先登录(只登录一次),然后访问页面->我的地盘页->产品页->项目页 官方案例 下面是一个简单的loc ...
- Locust性能测试工具核心技术@task和@events
Tasks和Events是Locust性能测试工具的核心技术,有了它们,Locust才能称得上是一个性能工具. Tasks 从上篇文章知道,locustfile里面必须要有一个类,继承User类,当性 ...
- Python Locust性能测试框架实践
[本文出自天外归云的博客园] Locust的介绍 Locust是一个python的性能测试工具,你可以通过写python脚本的方式来对web接口进行负载测试. Locust的安装 首先你要安装pyth ...
- SQLite介绍、学习笔记、性能测试
SQLite介绍.学习笔记.性能测试 哪些人,哪些公司或软件在用SQLite: Nokia's Symbian,Mozilla,Abobe,Google,阿里旺旺,飞信,Chrome,FireFox可 ...
- Locust性能测试
https://www.cnblogs.com/yoyoketang/p/9638151.html https://www.cnblogs.com/yoyoketang/p/9642242.html ...
- python locust 性能测试:locust安装和一些参数介绍
安装参考 https://www.cnblogs.com/fnng/p/6081798.html <虫师大大的,很详细> ps:python3.7暂不支持locust:python3安装建 ...
- Locust性能测试4-参数关联
前言 前面[Locust性能测试2-先登录场景案例]讲了登录的案例,这种是直接传账号和密码就能登录了,有些登录的网站会复杂一点, 需要先从页面上动态获取参数,作为登录接口的请求参数,如[学信网:htt ...
- HttpRunner学习8--使用debugtalk.py辅助函数
前言 在HttpRunner中,我们的测试用例都是写在 YAML/JSON 文件中,有时候我们想借助代码来实现某些较复杂的功能,但在 YAML/JSON 中是无法直接写代码来处理的,这个时候,我们可以 ...
- Locust性能测试6-命令行参数详解
前言 当我们在linux上使用locust工具压测的时候,会使用no-web模式,然后需要收集运行的日志,方便查找问题. 命令行参数 输入locust --help 查看所有的命令行参数 > l ...
随机推荐
- CURL SSL为6的由来
起初,我直接用方倍工作室之前做微信接口调用时的http_request函数,发现能正常调用微信api的函数获取不了火星天气数据,然后又尝试用file_get_contents,仍然不行 一直出的错就是 ...
- Alpha冲刺(7/10)——2019.4.29
作业描述 课程 软件工程1916|W(福州大学) 团队名称 修!咻咻! 作业要求 项目Alpha冲刺(团队) 团队目标 切实可行的计算机协会维修预约平台 开发工具 Eclipse 团队信息 队员学号 ...
- linux 远程文件复制和拉取
基本命令格式 上传 scp -r myfilder tiantian@192.168.168.221:/home/tiantian/temp/ 复制本地文件到远程/home/tiantian/te ...
- AKKA HTTP 简单示例
AKKA HTTP 简单示例 依赖包: compile("com.typesafe.akka:akka-http_2.13:10.1.8") compile("com.t ...
- javascript 忍者秘籍读书笔记(二)
闭包的私有变量 function Ninja() { let feints = 0; this.getFeints = function () { return feints }; this.fein ...
- 017 使用域名访问本地项目---涉及switchhost和Nginx
1.统一环境 我们现在访问页面使用的是:http://localhost:9001 实际开发中,会有不同的环境: 开发环境:自己的电脑 测试环境:提供给测试人员使用的环境 预发布环境:数据是和生成环境 ...
- Background Suppression Network for Weakly-supervised Temporal Action Localization [Paper Reading]
研究内容:弱监督时域动作定位 结果:Thumos14 mAP0.5 = 27.0 ActivityNet1.3 mAP0.5 = 34.5 从结果可以看出弱监督这种瞎猜的方式可以PK掉早些时候的一些全 ...
- C编程遇到的一些小细节
1 typedef int ElemType --> typedef int ElemType; 此处要加分行(:),要区别 #defin a 20 此处不需要加分号:#define是预 ...
- 软件——解决Modelsim10.1d窗口不停弹出问题(一直弹窗)
博主在编写Verilog HDL时需要用到Modelsim,于是博主便安装了Modelsim10.1d,然后兴高采烈打开准备跑仿真时,打开软件发现Modelsim10.1d的各种窗口在不停弹出,终止进 ...
- 一个 Java 正则表达式例子
今天在项目里看到用 Python 正则表达式的时候,用到 group,没有仔细看.正好学习 Java 正则表达式,对 group 多留意了一下. 上代码: import java.util.regex ...