基于python的性能负载测试Locust-5-脚本编写之发送HTTP请求
发送HTTP请求
目前为止,我们只是掌握了Locust用户的任务执行。为了真正的对一个系统进行负载测试我们需要发送HTTP请求。这时候就用到了HttpLocust类,这个类中的每个实例都有一个client属性(也就是HttpSession的实例),可以进行HTTP请求。
-
class
HttpLocust
-
表示一个孵化出的HTTP “user” 用于袭击被负载的系统对象。
这个用户的行为由task_set属性来定义,这个属性指向TaskSet类。
这个类创建了一个client属性,它支持在requests之间保持user的session。
client
= None-
通过对Locust的实例化创建了HttpSession的实例,client支持cookies,因此可以在HTTP请求间保持session。
-
继承HttpLocust类之后,我们可以使用它的client属性对服务器发送HTTP请求。下面的locust文件可以通过/and/about/这两个URLs对站点进行负载测试:
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来引用HttpSession实例,而不是self.locust.client。之所以这样是因为TaskSet类中有个名为client的属性,它的返回值为self.locust.client