Locust 发起 HTTP 请求

🌙
手机阅读
本文目录结构

发起 HTTP 请求

到目前为止,我们仅介绍了 Locust 用户的任务计划部分。

为了实际负载测试系统,我们需要发起 HTTP 请求(如不不发 http 请求,我们还测试个锤子)。

为了帮助我们做到这一点,locust 弄了一个HttpLocust类。

使用此类时,每个实例都会获得一个 client 属性,该属性将是 HttpSession 的一个实例,可用于发出 HTTP 请求。

HttpLocust

表示生成并攻击要进行负载测试系统的 HTTP"用户"(在 locust 里,属于你要发出去的蝗虫小弟们)。

该用户的行为由 task_set 属性定义,该属性应指向TaskSet类。

在实例化创建一个客户端属性时,该属性是一个 HTTP 客户端,支持在请求之间保持用户会话。

client = None

在 Locust 实例化后创建的 HttpSession 实例。

客户端支持 cookie,因此保持 HTTP 请求之间的会话。

当从 HttpLocust 类继承时,我们可以使用其 client 属性对服务器发出 HTTP 请求。

下面是一个 locust 文件的示例,可用于对具有两个 URL 的站点进行负载测试。 //about/

from locust import HttpLocust, TaskSet, task

class MyTaskSet(TaskSet):
    @task(2)
    def index(self):
        self.client.get("/")

    @task(1)
    def about(self):
        self.client.get("/about/")

class MyLocust(HttpLocust):
    task_set = MyTaskSet
    min_wait = 5000
    max_wait = 15000

使用上面的 Locust 类,每个模拟用户将在请求之间等待 5 到 15 秒,而 / 将被请求为 /about/ 的两倍。

细心的读者会发现奇怪的是,我们可以使用 TaskSet 中的 self.client 而不是 self.locust.client 来引用 HttpSession 实例。

我们可以这样做是因为 TaskSet 类具有一个名为 client 的快捷属性,该属性仅返回 self.locust.client

使用 HTTP client

HttpLocust 的每个实例在 client 属性中都有一个 HttpSession 实例。

HttpSession 类实际上是 requests.Session 的子类,可用于发出 HTTP 请求,并使用 get, post, put, delete, head, patchoptions 方法。

HttpSession 实例将在请求之间保留 cookie,以便可用于登录网站并在请求之间保持会话。

也可以从 Locust 实例的 TaskSet 实例中引用 client 属性,以便轻松地从客户端中检索客户端并发出 HTTP 请求。

这是一个简单的示例,该请求向 /about 路径发出 GET 请求(在这种情况下,我们假设 self 是TaskSetHttpLocust类的实例:

response = self.client.get("/about")
print("Response status code:", response.status_code)
print("Response content:", response.text)

这是发出 POST 请求的示例:

response = self.client.post("/login", {"username":"testuser", "password":"secret"})

AXIHE / 精选资源

浏览全部教程

面试题

学习网站

前端培训
自己甄别

前端书籍

关于朱安邦

我叫 朱安邦,阿西河的站长,在杭州。

以前是一名平面设计师,后来开始接接触前端开发,主要研究前端技术中的JS方向。

业余时间我喜欢分享和交流自己的技术,欢迎大家关注我的 Bilibili

关注我: Github / 知乎

于2021年离开前端领域,目前重心放在研究区块链上面了

我叫朱安邦,阿西河的站长

目前在杭州从事区块链周边的开发工作,机械专业,以前从事平面设计工作。

2014年底脱产在老家自学6个月的前端技术,自学期间几乎从未出过家门,最终找到了满意的前端工作。更多>

于2021年离开前端领域,目前从事区块链方面工作了