美文网首页
Locust性能测试(2)

Locust性能测试(2)

作者: 钟微 | 来源:发表于2019-08-12 09:29 被阅读0次

    很多网站需要先登录才能访问其他的接口,下面以先登录然后访问->群管理页面->问题件管理页->索赔件管理为例

    # 保存为locustfile.py
    # coding=utf-8
    from locust import HttpLocust, TaskSet, task
    
    # 实现场景:先登录(只登录一次),然后访问->群管理页面->问题件管理页->索赔件管理
    
    class UserBehavior(TaskSet):
    
        def _login(self):
            '''登录方法'''
            # host = 'https://gd.baoshi56.com'  # 服务器地址
            loginUrl = "/admin/common/login.html"
            h = {
                "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.80 Safari/537.36",
                "Content-Type": "application/x-www-form-urlencoded",
                }
            body = {"account": "********",  # 账号
                    "password": "******",    # 密码
                    }
            # self.client调用get和post方法,跟requests是一样的
            # requests.get 对应client.get
            # requests.post 对应client.post
            r = self.client.post(loginUrl, data=body, headers=h)
    
            if r.status_code == 200:
                print("登录成功")
            else:
                print(r.status_code + "登录失败")
    
        # 定义on_start()相当于用例的准备操作
        def on_start(self):
            '''任务开始准备工作:只登录一次'''
            self._login() #用户登录
    
        # 任务1-访问群管理页面
        # @task装饰该方法表示为用户行为。
        # 括号里面参数表示该行为挑选执行的权重,数值越大,执行频率越高,不设置默认是1
        @task(2)
        def admin_group(self):
            r = self.client.get("/admin/group/grouplist.html/")
            if r.status_code == 200:
                print("访问群管理页面功")
            else:
                print(r.status_code + "访问群管理页面失败")
    
    
        # 任务2-问题件管理页
        @task(1)
        def admin_question(self):
            r = self.client.get("/admin/question_record/questionrecordlist.html/")
            if r.status_code == 200:
                print("访问问题件管理页面功")
            else:
                print(r.status_code + "访问问题件管理页面失败")
    
    
        # 任务3-项目
        @task(1)
        def admin_claim(self):
            r = self.client.get("/admin/claim_record/claimrecordlist.html/")
            if r.status_code == 200:
                print("访问索赔件管理页面功")
            else:
                print(r.status_code + "访问索赔件管理页面失败")
    
    
    
    
    # 性能测试配置
    """
    WebsiteUser()类用于设置性能测试。
    task_set :指向一个定义了的用户行为类。
    min_wait :用户执行任务之间等待时间的下界,单位:毫秒。
    max_wait :用户执行任务之间等待时间的上界,单位:毫秒。
    """
    class WebsiteUser(HttpLocust):
        task_set = UserBehavior
        min_wait = 1000
        max_wait = 1000
    
    if __name__ == "__main__":
        import os
        os.system("locust -f locustfile.py --host=https://gd.baoshi56.com")
        # -f 参数是指定运行的脚本
        # --host是指定运行项目的host地址,
        # 这里用的https://gd.baoshi56.com,
        # 和代码里面访问的地址拼接起来就是完整地址了
    
    

    设置1个虚拟用户,每秒启动1个服务,点start后运行结果:
    从结果可以看到登录的请求只访问了一次,然后是任务1的次数差不多是任务2、任务3请求次数的2倍


    image.png image.png

    相关文章

      网友评论

          本文标题:Locust性能测试(2)

          本文链接:https://www.haomeiwen.com/subject/fuhyjctx.html