博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python Locust对指定网站“一键压测”
阅读量:6803 次
发布时间:2019-06-26

本文共 2871 字,大约阅读时间需要 9 分钟。

[本文出自天外归云的博客园]

前篇

前篇:

本篇

承上——归纳过程

在前篇的基础上,我们可以利用Locust性能测试框架编写python脚本对指定网站或者接口进行压测,对于Locust的使用我们可以归纳为三步:

1. 编写python压力测试脚本;

2. 在命令行中启动Locust服务并指定压测脚本与hosts等信息;

3. 访问设定并发量并进行压测。

启下——编写脚本

对于以上三步,我通过编写脚本来做一下进一步封装,实现化繁为简,“一步压测”的目的。这里有两个python脚本,一个是压测脚本,一个是启动脚本。还有一个PowerShell脚本,用来启动压测。这三个脚本放在一个文件夹下面:

压测脚本格式如下,大家可以随意更改或添加配置,起名为“locust_test.py”并和启动脚本放在同一目录下:

from locust import HttpLocust,TaskSet,taskclass UserBehavior(TaskSet):    @task()    def test(self):        self.client.get("/homepage/list_header.html")class WebUserLocust(HttpLocust):    weight = 1    task_set = UserBehavior    min_wait = 300    max_wait = 700

启动脚本如下,起名为“start_locust.py”:

import os,re,sys,subprocess,webbrowserdef replace_url(url):    dir_path = os.path.dirname(os.path.abspath(__file__))    locust_file_path = os.path.join(dir_path,"locust_test.py")    with open(locust_file_path,"r") as locust_file:        content = locust_file.read()        searchObj = re.search( r'\"(.*)*\"', content, re.M|re.I)        content = content.replace(searchObj.group(),"\""+url+"\"")    open(locust_file_path,"w").write(content)if __name__ == '__main__':    replace_url(sys.argv[2])    subprocess.Popen('locust -f .\locust_test.py --host='+sys.argv[1], shell=True)    webbrowser.open("http://localhost:8089/")

PowerShell脚本如下(打开方式默认设为PowerShell启动),起名为“start.ps1”:

Write-Host "请输入压测网站host路径(例如:http://api.g.caipiao.163.com):"$site = Read-HostWrite-Host "请输入压测网站url路径(例如:/homepage/list_header.html):"$url = Read-Hostpython .\start_locust.py $site $url

使用——双击压测

使用方式很简单,双击“start.ps1”脚本,出现如下界面:

之后浏览器会自动打开我们的压测页面:

至此我们就可以对指定网站url接口施加压力了。

网站压力攻击脚本

如果不关心网站接口的性能数据,直接对网站进行压力攻击,我们可以对脚本进行无界面化精简处理。创建python脚本“start_locust_implicit.py”,内容如下:

import os,re,sys,subprocess,webbrowserdef replace_url(url):    dir_path = os.path.dirname(os.path.abspath(__file__))    locust_file_path = os.path.join(dir_path,"locust_test.py")    with open(locust_file_path,"r") as locust_file:        content = locust_file.read()        searchObj = re.search( r'\"(.*)*\"', content, re.M|re.I)        content = content.replace(searchObj.group(),"\""+url+"\"")    open(locust_file_path,"w").write(content)if __name__ == '__main__':    replace_url(sys.argv[2])    subprocess.Popen('locust -f .\locust_test.py --host='+sys.argv[1]+' --no-web -c '+sys.argv[3]+' -r '+sys.argv[4]+' -n '+sys.argv[5], shell=True)

只是在之前的脚本的基础上对subprocess的调用脚本内容进行了修改,添加了需要传入的参数。然后创建ps1脚本“start_locust_implicit.ps1”,内容如下:

Write-Host "请输入压测网站host路径(例如:http://api.g.caipiao.163.com):"$site = Read-HostWrite-Host "请输入压测网站url路径(例如:/homepage/list_header.html):"$url = Read-HostWrite-Host "请输入模拟访问网站人数(例如:1000):"$amount = Read-HostWrite-Host "请输入模拟每秒并发访问网站人数(不得小于模拟访问网站人数,例如:100):"$conc = Read-HostWrite-Host "请输入模拟访问请求总数(例如:100000):"$reqs = Read-Hostpython .\start_locust_implicit.py $site $url $amount $conc $reqsRead-Host

使用方式仍然是双击以PowerShell运行ps1脚本,根据提示一步一步操作就可以对网站发动压力攻击了。

转载地址:http://rjjwl.baihongyu.com/

你可能感兴趣的文章
php7扩展开发[8]类方法之间的调用
查看>>
通过C语言HelloWord程序对计算系统理解
查看>>
vue之better-scroll的封装,包含下拉刷新,上拉加载功能及UI(核心为借鉴,我仅仅是给轮子套上了外胎...)...
查看>>
HTML基础-------最初概念以及相关语法
查看>>
如何理解代理?
查看>>
python基础:冒泡和选择排序算法实现
查看>>
python基础一 day13 复习
查看>>
appium===安卓SDK下载很慢的解决办法
查看>>
java.面向对象特征
查看>>
poj2月下旬题解
查看>>
json格式返回到cmd中crul中文乱码问题
查看>>
统计学习概念
查看>>
Oracle学习笔记--第3章 使用sql*plus工具
查看>>
各驱动器和URL
查看>>
javascript生成二维码
查看>>
iOS开发之 -- 判断tableview/scrollview的滑动方法,及导航栏渐变的实现代码
查看>>
流媒体知识核心慨念
查看>>
Bootstrap导航
查看>>
前端工程师技能之photoshop巧用系列第一篇——准备篇
查看>>
欧美姓氏的来源
查看>>