locust性能测试:on_start, on_stop(四)

一、

  • on_start :每个虚拟用户在启动时都会调用该方法

  • on_stop 当虚拟用户用户停止运行(被终止)时调用

例如:我们在测试的下单功能的时候,首先要登录用户。

所以我们可以在测试类声明一个on_start方法。on_start方法内初始化登录操作,每个虚拟用户在启动时都会调用该方法进行登录操作,再进行下单操作.

当用户完成操作后,声明一个on_stop方法进行退出登录

from locust import HttpUser,TaskSet,between,task

n = 0
class UserBehavior(TaskSet):

    def login(self):
        global n
        n += 1
        print("%s个虚拟用户开始启动,并登录"%n)

    def logout(self):
        print("退出登录")



    def on_start(self):
        self.login()

    @task(4)
    def test1(self):
        """
        用户浏览首页商品列表
        :return:
        """

        url = '/list'
        param = {
            "limit":8,
            "offset":0,
        }
        with self.client.get(url,params=param,headers={},catch_response = True) as response:
            print("用户浏览首页商品列表")

    @task(6)
    def test2(self):
        """
        用户查看商品详情
        :return:
        """

        url = '/detail'
        param = {
            'id':1
        }
        with self.client.get(url,params=param,headers={},catch_response = True) as response:
            print("用户浏览商品详情")

    @task(1)
    def test3(self):
        """
        用户查看订单列表
        :return:
        """

        url = '/order'
        param = {
            "limit":8,
            "offset":0,
        }
        with self.client.get(url,params=param,headers={},catch_response = True) as response:
            print("用户查看订单列表")

    def on_stop(self):
        self.logout()


class WebsiteUser(HttpUser):
    host = 'http://127.0.0.1'
    tasks = [UserBehavior]

    wait_time = between(1, 2)

if __name__ == '__main__':
    os.system("locust -f ccc.py")

运行后停止:

1个虚拟用户开始启动,并登录
用户浏览首页商品列表
2个虚拟用户开始启动,并登录
用户浏览商品详情
用户查看订单列表
[2021-09-28 23:33:51,443] MacBook-Air.local/INFO/locust.runners: All users spawned: {"WebsiteUser": 3} (3 total users)
3个虚拟用户开始启动,并登录
用户浏览商品详情
用户浏览首页商品列表
用户浏览首页商品列表
用户浏览商品详情
用户浏览商品详情
用户浏览商品详情
用户查看订单列表
用户浏览商品详情
用户浏览商品详情
用户浏览商品详情
用户浏览商品详情
退出登录
退出登录
退出登录

每个虚拟用户启动只执行一次on_start和on_stop函数

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。