首页 > 其他 > 详细

7 locust 关联

时间:2021-01-27 22:13:57      阅读:41      评论:0      收藏:0      [点我收藏+]

1 关联

  • 上一个请求返回的某个值给下一个请求使用
  • 下面代码模拟登录生成 token 给 do_something 在 headers 中使用

 

import requests
from locust import TaskSet, task, HttpLocust, between


class TestLogin(TaskSet):

    token = None

    def on_start(self):
        # 调用登录接口,生成 token
        self.token = self.do_login()


    def do_login(self):
        url = https://www.baidu.com/login
        data = {
                   "username": "admin1",
                   "password": "admin123456"
               }

        with requests.post(url=url,     # 使用 requests 发送请求,locust 不会进行结果统计
                              data=data,
                              catch_response=True,  # catch_response: 允许该请求被标记为失败
                              name=01_baidu_login) as resp:   # name: 结果收集是会按照 name 进行归类
            # 断言
            if resp.status_code == 200:
                if resp.json()[code] == 1:
                    return resp.json()[data][token]
                else:
                    return None
            else:
                return None

    @task
    def do_something(self):
        url = https://www.baidu.com/do
        headers = {
            "token": self.token     # 使用登录后生成的 token
        }

        with self.client.get(url=url,
                              headers=headers,
                              catch_response=True,  # catch_response: 允许该请求被标记为失败
                              name=01_do_something) as resp:   # name: 结果收集是会按照 name 进行归类
            # 断言
            if resp.status_code == 200:
                if resp.json()[code] == 1:
                    resp.success()
                    print(resp.json())
                    return resp.json()[data][token]
                else:
                    resp.failure(01_baidu_login failed: code is  + resp.json()[code])
                    print(resp.text)
                    return None
            else:
                resp.failure(01_baidu_login failed: status is not 200)
                print(resp.text)
                return None
        pass


class RunTest(HttpLocust):  # 有变化。HttpLocust 改为 HttpUser/FastHttpUser
    task_set = {TestLogin}  # 有变化。task_set 改为 tasks。且值为 dict
    wait_time = between(0, 0)
    host = ""


if __name__ == __main__:
    import os
    os.system(locust -f ./locustfile2.py --web-host=127.0.0.1 --web-port=9999)

 

7 locust 关联

原文:https://www.cnblogs.com/lizitestdev/p/14336161.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!