Locust-5-locust案例讲解(顺序执行)

前言

上一篇是按TaskSet中定义的任务权重来执行,本篇讲解按TaskSet中定义的顺序来执行任务

用到的TaskSequence类是,@seq_task()指定它的任务将按顺序执行

 

代码(直接基于上一篇中的代码进行修改)

 

# locust_demo.py
from locust import TaskSequence,HttpLocust,seq_task
import os

class MyTaskSet(TaskSequence):

    def login(self):
        self.headers = {
            "Origin": "http://192.168.1.9:8080",
            "User-Agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36"
        }
        path = "/SSOAuth?action=login&code=undefined&gotoURL=http%3A%2F%2F192.168.1.9%3A8080%2Fportal%2Fgeoindex.do"
        da = {"userAccount": "suner001", "pwd": "b123456"}
        data = {
            "data": '%s' % da
        }
        self.client.post(path, headers=self.headers, data=data, verify=False)

    def on_start(self):
        self.login()  # 执行操作前先进行登录,并只登录一次

    def on_stop(self):
        print("----- Test over -----")

    @seq_task(1) # 第一个执行
    def get_resource(self):  # 访问资源中心
        path = "/portal/georesources.do"
        self.client.get(path,headers=self.headers)

    @seq_task(2) # 第二个执行
    def get_application(self):  # 访问应用中心
        path = "/portal/geosetvolume.do"
        self.client.get(path,headers=self.headers)

    @seq_task(3) # 第三个执行
    def get_information(self):  # 访问资讯中心
        path = "/portal/geoinformation.do"
        self.client.get(path,headers=self.headers)



class MyLocust(HttpLocust):  # 定义一个线程组
    task_set = MyTaskSet  # 指向任务集合
    host = "http://192.168.1.9:8080"  # web项目的话这里要设置host属性,否则是报错的

if __name__ == '__main__':
    # os模块执行系统命令,相当于在cmd切换到当前脚本目录,执行locust -f locust_demo.py
    os.system("locust -f locust_demo.py")

 

 localhost:8089访问

设置1个虚拟用户,一秒生成1个用户,并按指定的任务顺序执行

 

Locust-5-locust案例讲解(顺序执行)_第1张图片

你可能感兴趣的:(Locust)