Fork me on GitHub

【Linux】【压测】基于python Locust库实现自动化压测实践

关于python+locust系列:

【Linux】【压测】关于python实现性能自动化工具之Locus: https://www.cnblogs.com/haochuang/articles/13230602.html
【Linux】【压测】基于python Locust库实现自动化压测实践: https://www.cnblogs.com/haochuang/p/13231445.html


基于Python locust,实现自动化压测,这里直接介绍实践的情况,对于环境与安装等,请参考前一篇文章:【Linux】【压测】关于python实现性能自动化工具之Locust

首先大概说下本次实践的思路,主要就是分如下几个步骤:

1.环境安装,与待压测的数据、API准备;

2.代码编写,涉及到读取外部参数等;

3.压测执行,与运行结果查看,监控等;

 

下面,我按此3个步骤介绍:

1.环境安装,与待压测的数据、API准备;

由于之前项目需要,我本地安装有Python2、Python3两个版本,可以根据需要随时切换使用。

IDE,我本地也有两个工具:PyCharm、VSCode。本次基于VSCode测试。

Python2、Python3、PyCharm、VSCode这些的相关安装配置之类,基本没有什么,此不赘述。

 

首先需要准备好待压测的API、以及待压测的参数。

这里我先用一个基本的GET的做样例:

GET    /api/rest/v1/en/haochuangrtest/query?number=1234567890@HAOCHUANG

参数的话,目前这个主要是number后面的 需要变化,我们可以根据需要通过脚本生成,或者直接从DB里面获取一些,并写入到txt中。

这一步的目标就是要首先保证API和参数本身可用,可访问,http请求可达。

不论是是哟个postman还是postwoman去测试都可以,只要API请求返回正确就可以了。

 

2.代码编写,涉及到读取外部参数等;

代码编写,我举个目前的样例如下:

test_haochuang_locust.py

from locust import HttpLocust, TaskSet, task, HttpUser, between

'''
D:\CODE\CODE_VSCode\HAO_VSCcode\HAO_AutoTest\LOCUST\HAO_Locust\LocustDemo> locust --host=http://localhost -f .\test_haochuang\test_haochuang_locust.py
'''

class AdminLoadTest(HttpUser):
    wait_time = between(5, 9)

    """
    创建后台管理站点压测类,需要继承TaskSet
    可以添加多个测试任务
    """
       
    @task(3)
    def get_status_more_HAOCHUANG(self):
        """
        查询实例方法
        :return:
        """

        rootdir = "D:\\CODE\\CODE_VSCode\\HAO_VSCcode\\HAO_AutoTest\\LOCUST\\HAO_Locust\\LocustDemo\\test_haochuang\\HAOCHUANG.txt"
        with open(rootdir, 'r') as file_to_read:
            while True:
                line = file_to_read.readline()
                if not line:
                    break
                line = line.strip('\n')
                self.client.get("https://www.cnblogs.com/haochuang/api/rest/v1/en/haochuang/query?number="+line)
        file_to_read.close()  

    
    @task
    def get_status_one_HAOCHUANG(self):
        """
        当任何一个task调度执行之前,
        on_start实例方法会被调用
        先登录
        :return:
        """
        self.client.get("https://www.cnblogs.com/haochuang/api/rest/v3/en/haochuang/query?number=26572316@HAOCHUANG")   


class RunLoadTests(HttpUser):
    """
    创建运行压测类
    """
    task_set = AdminLoadTest

txt文件比较简单,里面就是测试数据,主要是在python中需要把路径制定正确,路径中的注意转义;

 

 

具体代码写好之后,我们可以运行:

PS D:\CODE\CODE_VSCode\HAO_VSCcode\HAO_AutoTest\LOCUST\HAO_Locust\LocustDemo> locust --host=http://localhost -f .\test_haochuang\test_haochuang_locust.py

 

 

然后,在浏览器中设置好需要的模拟用户数量,以及需要压测的速率。

 

 

 

 

3.压测执行,与运行结果查看,监控等;

 

 Charts:

 

 

 

 Failures:

 

Download Datas:

 

下载文件可见结果如下:

 

 对于具体的参数,更多扩展等,也可以学习一下官方的这个手册:https://docs.locust.io/en/stable/quickstart.html,里面有比较详细的介绍。

 至于等待时间,以及压测其他参数调优,过程控制等,我下次再实践之后补充文档介绍。

 

待续

posted @ 2020-07-03 17:05  念槐聚  阅读(566)  评论(0编辑  收藏  举报

IT技术&应用开发&研究 - 创建于 2008年05月12日

这是一位IT工程师的个人站,内容主要是网站开发方面的技术文章,大部分来自学习或工作,部分来源于网络,希望对大家有所帮助。

致力于软件学习&研究工作,涉及Linux与软件开发出、测试、产品、行业相关知识,关注互联网前沿技术与与创业趋势等。


博客园 | Github | W3C

返回顶部