这些年大火的Locust压测框架,你再不学就晚了

前篇

前篇:Python Locust性能测试框架实践

01、归纳过程

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

  • 编写python压力测试脚本;
  • 在命令行中启动Locust服务并指定压测脚本与hosts等信息;
  • 访问Locust本地网址设定并发量并进行压测。

02、编写脚本

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

图片

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

from locust import HttpLocust,TaskSet,task



class 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,webbrowser



def 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-Host

Write-Host "请输入压测网站url路径(例如:/homepage/list_header.html):"

$url = Read-Host

python .\start_locust.py $site $url

03、使用:双击压测

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

图片

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

图片

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

04、网站压力攻击脚本

如果不关心网站接口的性能数据,直接对网站进行压力攻击,我们可以对脚本进行无界面化精简处理。

创建python脚本“start_locust_implicit.py”,内容如下:

import os,re,sys,subprocess,webbrowser



def 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-Host

Write-Host "请输入压测网站url路径(例如:/homepage/list_header.html):"

$url = Read-Host

Write-Host "请输入模拟访问网站人数(例如:1000):"

$amount = Read-Host

Write-Host "请输入模拟每秒并发访问网站人数(不得小于模拟访问网站人数,例如:100):"

$conc = Read-Host

Write-Host "请输入模拟访问请求总数(例如:100000):"

$reqs = Read-Host

python .\start_locust_implicit.py $site $url $amount $conc $reqs

Read-Host

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


最后: 欢迎大家关注公众号:【 伤心的辣条 】,领取一份300页pdf文档的Python自动化测试工程师核心知识点总结!

公众号里大部分资料都是面试时面试官必问的知识点,也包括了很多测试行业常见知识,其中包括了有基础知识、Linux必备、Shell、互联网程序原理、Mysql数据库、抓包工具专题、接口测试工具、测试进阶-Python编程、Web自动化测试、APP自动化测试、接口自动化测试、测试高级持续集成、测试架构开发测试框架、性能测试、安全测试等。

如果你测试中有许多的困惑,那么我创建的软件测试技术交流群将会是你接触良师益友的有益社区,同行或许可以给你带来一些实际性的帮助与突破。群:902061117 你也想知道同行都在怎样致富吧!

如果对你有一点点帮助,各位的「点赞」就是小编创作的最大动力,我们下篇文章见!

好文推荐

2021软件测试工程师面试题汇总(内含答案)-看完BATJ面试官对你竖起大拇指!

什么样的人适合从事软件测试工作?

软件测试和软件开发哪个发展更好

那个准点下班的人,比我先升职了…

在这里插入图片描述

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值