zoukankan      html  css  js  c++  java
  • python学习笔记(locust性能测试模块)

      locust是基于python的性能测试工具、支持python2.7及其以上的版本、相对于主流的LR与Jmeter工具使用的方式不一样、locust是通过编写python代码来完成性能测试的。

    通过LR与Jmeter都是一个特定平台、我们只能在这个平台上使用、局限性很大。但是利用locust通过python可以进行性能测试的同时,也能掌握python语言的使用,且因为是开发语言,测试过程中可以编写自己需要的功能内容。

      博主这里就简单的整理下如何使用locust模块,主要的三个类: HttpLocust, TaskSet, task

      TaskSet是任务类、定义待测试的任务代码集如下的UserBehavior的类,task是子任务方法

    # -*- coding: utf_8 -*-
    # 文件名称:main_pt.py
    # locust基础性能测试模板
    # 时间:2017-10-19
    
    from locust import HttpLocust, TaskSet, task
    import subprocess
    import json
    
    
    # 性能测试任务类 TaskSet.
    class UserBehavior(TaskSet):
        # 开始
        def on_start(self):
            pass
    
        # 任务
        @task(1)
        def getTagVals(self):
            u"""
            request_url:请求路径
            request_params:请求头参数
            request_json:请求json参数
            """
            request_url = "/xxx/tag/getTagVals" (待测试的路径)
            request_params = {
                "nonce": "abcdefg",
                "_type": None,
                "target": "CLNJ01",
                "timestamp": 1507860000,
                "apiId": "EC",
                "apiSign": "D41D8CD98F00B204E9800998ECF8427E"
            }
            request_json = {
                "tagKey": 25
            }
            response = self.client.post(
                url=request_url,
                params=request_params,
                json=request_json
            )
            if response.status_code != 200:
                print u"返回异常"
                print u"请求返回状态码:", response.status_code
            elif response.status_code == 200:
                print u"返回正常"
    
            # 这里可以编写自己需要校验的返回内容
            # content = json.loads(response.content)["content"]
            # if content["tagKey"] == 25:
            #     print u"校验成功"
            #     print json.dumps(content, encoding="UTF-8", ensure_ascii=False)
    
    
    # 性能测试配置
    class MobileUserLocust(HttpLocust):
        u"""
        min_wait :用户执行任务之间等待时间的下界,单位:毫秒。
        max_wait :用户执行任务之间等待时间的上界,单位:毫秒。
        """
        # weight = 3
        task_set = UserBehavior
        host = "http://xxx"  (待测试的ip或者域名)
        min_wait = 3000
        max_wait = 6000
    
    
    if __name__ == "__main__":
        subprocess.Popen("locust -f main_pt.py", shell=True)

      最后HttpLocust类是用来设置性能测试的配置、如待测试的host、待测试的任务集task_set 

      如何运行:首先打开到文件路径下、然后直接运行脚本  python main_pt.py

      运行成功后即可访问 locust的 web UI界面  :http://localhost:8089

      

      提示输入的内容是 模拟的用户总数  和 每秒钟并发的用户数量、点击开始按钮即可

    可以查看测试任务的性能结果 上图圈出的 RPS是 每秒用户数、FAILUSERS是 失败率

    可以 STOP 中止测试 也可以 Edit 重新编辑性能测试的场景、还可以查看后台的打印内容:

  • 相关阅读:
    Esper学习之二:事件类型
    Esper学习之一:Esper介绍
    在本机搭建mycat 单机环境,使用mariadb 伪集群
    spring mvc 跨域请求处理——spring 4.2 以上
    spring cache 详解
    Java抽象类和抽象方法例子
    拉灯问题(标准答案都是错的!)
    js实现模拟自动点击按钮,并且在10秒倒计时之后疯狂点击
    ADO.NET基本操作(CRUD、Procedure、Transaction)
    利用PowerDesigner绘制PDM生成SQL Server数据库
  • 原文地址:https://www.cnblogs.com/cllovewxq/p/7692248.html
Copyright © 2011-2022 走看看