• 基于python的性能负载测试Locust-6-脚本编写之使用HTTP client


    使用HTTP client

    每个HttpLocust实例的client属性中都有一个HttpSession实例。HttpSession类是requests.Session的子类并且通过get,post,put,delete,head,patch和options方法发送HTTP请求,然后用作Locust的统计报告。HttpSession实例保存了coookies,可以用于登录网站并且在不同的requests之间保持session。client属性也可以被Locsut实例的TaskSet实例所引用,方便重新得到client并且在任务里发送HTTP请求。

    下面是对/about路径发送GET请求的例子(假设self是TaskSet或者HttpLocust类的实例):

    response = self.client.get("/about")
    print "Response status code:", response.status_code
    print "Response content:", response.content
    

    下面是关于POST请求的例子:

    response = self.client.post("/login", {"username":"testuser", "password":"secret"})
    

    安全模式

    HTTP client被配置成在安全模式下运行。因为连接错误,超时,或者其它类似错误引起的请求失败都不会抛出异常,而是返回一个空响应对象。这个请求将被统计为失败。返回的空响应的content属性被设置为None,并且status_code被设置为0。

    手动设置一个请求为成功或者失败

    默认HTTP响应为2xx之外的请求将被标识为失败。大部分时候这样判断都没问题,但是有时候返回404是我们期望的结果,而200不是我们期望的,那么就需要手动设置成功或者失败。

    即使响应码是正常的我们也可以通过catch_response和with语句标识这个请求为失败:

    with client.get("/", catch_response=True) as response:
        if response.content != "Success":
            response.failure("Got wrong response")
    

    同样的如果一个请求的响应为HTTP错误码,我们也可以标识它的结果为成功:

    with client.get("/does_not_exist/", catch_response=True) as response:
        if response.status_code == 404:
            response.success()
    

    通过动态参数进行URLs请求的分组

    一些网站的页面URLs包含一些动态参数,这种情况也比较普遍。一般情况下,可以传递name语句给HttpSession的不同request方法,从而实现在Locust的统计报告里将这些URLs划为一组。

    例子:

    # 这些request请求的统计结果将会被分组放在: /blog/?id=[id]
    for i in range(10):
        client.get("/blog?id=%i" % i, name="/blog?id=[id]")
  • 相关阅读:
    硬盘安装RedHat,FC和CentOS5.7
    Stanford CoreNLP开源项目的3种编译和运行方式
    Heritrix源码分析(六) Heritrix的文件结构分析
    java里抽象类和接口的区别
    centos 5 手动分区来安装系统的方法
    最大熵工具包的使用
    Heritrix源码分析(五) 如何让Heritrix在Ecplise等IDE下编程启动
    linux配置java环境变量(详细)
    CentOS安装中文支持(linux中文文件名乱码)
    安排会议,使得每个员工能够参加至少两次会议,并使会议总次数最少
  • 原文地址:https://www.cnblogs.com/mu-shi-shi/p/6070001.html
Copyright © 2020-2023  润新知