前言

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性能测试的更多相关文章

  1. 【Python】模块学习之locust性能测试

    背景 locust是一个python的第三方库,用于做性能测试,可使用多台机器同时对一台服务器进行压测,使用其中一台机器作为主节点,进行分布式管理 博主测试接口的时候一直是使用python脚本,后来有 ...

  2. Locust性能测试_先登录场景案例

    前言 有很多网站不登录的话,是无法访问到里面的页面的,这就需要先登录了实现场景:先登录(只登录一次),然后访问页面->我的地盘页->产品页->项目页 官方案例 下面是一个简单的loc ...

  3. Locust性能测试工具核心技术@task和@events

    Tasks和Events是Locust性能测试工具的核心技术,有了它们,Locust才能称得上是一个性能工具. Tasks 从上篇文章知道,locustfile里面必须要有一个类,继承User类,当性 ...

  4. Python Locust性能测试框架实践

    [本文出自天外归云的博客园] Locust的介绍 Locust是一个python的性能测试工具,你可以通过写python脚本的方式来对web接口进行负载测试. Locust的安装 首先你要安装pyth ...

  5. SQLite介绍、学习笔记、性能测试

    SQLite介绍.学习笔记.性能测试 哪些人,哪些公司或软件在用SQLite: Nokia's Symbian,Mozilla,Abobe,Google,阿里旺旺,飞信,Chrome,FireFox可 ...

  6. Locust性能测试

    https://www.cnblogs.com/yoyoketang/p/9638151.html https://www.cnblogs.com/yoyoketang/p/9642242.html ...

  7. python locust 性能测试:locust安装和一些参数介绍

    安装参考 https://www.cnblogs.com/fnng/p/6081798.html <虫师大大的,很详细> ps:python3.7暂不支持locust:python3安装建 ...

  8. Locust性能测试4-参数关联

    前言 前面[Locust性能测试2-先登录场景案例]讲了登录的案例,这种是直接传账号和密码就能登录了,有些登录的网站会复杂一点, 需要先从页面上动态获取参数,作为登录接口的请求参数,如[学信网:htt ...

  9. HttpRunner学习8--使用debugtalk.py辅助函数

    前言 在HttpRunner中,我们的测试用例都是写在 YAML/JSON 文件中,有时候我们想借助代码来实现某些较复杂的功能,但在 YAML/JSON 中是无法直接写代码来处理的,这个时候,我们可以 ...

  10. Locust性能测试6-命令行参数详解

    前言 当我们在linux上使用locust工具压测的时候,会使用no-web模式,然后需要收集运行的日志,方便查找问题. 命令行参数 输入locust --help 查看所有的命令行参数 > l ...

随机推荐

  1. 阿里云 azkaban 发邮件的坑

    azkaban : 是一个 任务调度平台 安装文档: https://azkaban.readthedocs.io/en/latest/getStarted.html 因为阿里云是禁止掉是STMP 2 ...

  2. python读取word中的段落、表、图+++++++++++Doc转换Docx

    读取文本.图.表.解压信息 import docx import zipfile import os import shutil '''读取word中的文本''' def gettxt(): file ...

  3. IScroll中div点击事件触发两次解决办法

    1.网上的同学说的,直接修改源代码,但是这种方法可能会影响到现有的程序. 搜索onBeforeScrollStart方法,将其中的preventDefault禁止掉搜索_end方法,将其中模拟clic ...

  4. .Net Core 获取应用物理路径的常见问题

    如果要得到传统的ASP.Net应用程序中的相对路径或虚拟路径对应的服务器物理路径,只需要使用使用Server.MapPath()方法来取得Asp.Net根目录的物理路径. 但是在Asp.Net Cor ...

  5. SetWindowLong函数GetWindowLong函数

    这两个函数具体应用如下:SetWindowLong函数GetWindowLong函数 Delphi窗口化游戏 var Thwnd:HWND;//声明变量 句柄变量 devmodel1:DEVMODE; ...

  6. tomcat8 url包含|等特殊字符报错400的问题

    这个问题纠缠了我很久了,终于在今天早上解决了,感谢自己的不放弃和不断尝试的决心,我坚信,我可以找到解决方式!! 项目用的spring .spring mvc.hibernate框架,关于统一错误页面在 ...

  7. java面试经常涉及到的

    需要掌握的Java知识点: 1 基本数据类型.循环控制.String类型的使用.数组.类和对象.接口和抽象类.面向对象三大特征.异常处理.集合类(List.Map.Set) 2 能够熟练使用Sprin ...

  8. Spring MVC 复习

    概念 三层架构 将整个业务应用划分为三层 ​ 表现层:用来和客户端进行数据交互,一般采用MVC设计模式 ​ 业务层:处理公司具体业务逻辑 ​ 持久层:用来操作数据库 MVC模型 Model View ...

  9. SQL Server 2017 下载及安装详细教程

    SQL Servicer 2017 下载及安装 1)下载安装SQLServer 2)安装SQLServer management Studio. 一.     下载及安装SQLServer 下载链接( ...

  10. 2019 中兴java面试笔试题 (含面试题解析)

      本人5年开发经验.18年年底开始跑路找工作,在互联网寒冬下成功拿到阿里巴巴.今日头条.中兴等公司offer,岗位是Java后端开发,因为发展原因最终选择去了中兴,入职一年时间了,也成为了面试官,之 ...