Python做性能测试-Locust百度

一、安装:

                1、Locust在PyPI上可用,可以通过pip或easy_install安装:pip install locustio
                2、查看Locust可用选项:locust --help
                3、在Windows上安装蝗虫在Windows上,运行pip安装locustio应该可以工作。但是,如果没有,很有可能可以通过首先为pyzmq、gevent和greenlet安装预构建的二进制包来修复它。下载地址:http://www.lfd.uci.edu/~gohlke/pythonlibs/,当你下载了.whl文件后,你 可以通过以下命令安装:pip install name-of-file.whl
                补充知识点:增加打开文件的最大数量限制机器上的每个HTTP连接都打开一个新文件(技术上是一个文件描述符)。操作系统可以为可打开的文件的最大数量设置一个低限制。如果限制小于测试中模拟用户的数量,就会发生故障。将操作系统的默认最大文件数量限制增加到 比您希望运行的模拟用户数量更高的数量。如何做到这一点取决于正在使用的操作系统。
                注意:在Windows上运行蝗虫应该可以很好地开发和测试负载测试脚本。但是,在运行大规模测试时,建议您在Linux机器上这样做,因为gevent在Windows下的性能很差。

二、大家最关心的是如何使用locust去实战,这一节先说一下基础入门的,下面的代码是完成一个百度的请求性能测试

# -*- coding: utf_8 -*-
# locust性能测试

from locust import HttpLocust, TaskSet, task
import subprocess
import json

# 性能测试任务类 TaskSet.
class UserBehavior(TaskSet):
    # 开始
    def on_start(self):
        pass

    # 任务
    @task(10)
    def getTagVals(self):
        u"""
        request_url:请求路径
        request_params:请求头参数
        request_json:请求json参数
        """
        request_url = "https://www.baidu.com/" # (待测试的路径)

        response = self.client.get(
            url=request_url,
        )
        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 = "https://www.baidu.com/"  # (待测试的ip或者域名)
    min_wait = 3000
    max_wait = 6000


if __name__ == "__main__":
    subprocess.Popen("locust -f main_pt.py", shell=True)

 RPS是 每秒用户数、FAILUSERS是 失败率

猜你喜欢

转载自www.cnblogs.com/lixy-88428977/p/9367190.html