Locust 修改请求结果

🌙
手机阅读
本文目录结构

手动控制 Locust 请求结果是成功还是失败

默认情况下,除非 HTTP 响应代码为 OK(2xx),否则请求将被标记为失败的请求。 大多数情况下,此默认值是您想要的。

但是,有时候,例如,当测试您希望返回 404 的 URL 端点或测试设计错误的系统,即使发生错误时,该系统可能返回 200 OK 时(类似于你测试某个 URL,希望他是 404 页面,那么此时如果是 404 页面,那么对你来说应该是测似乎结果成功的),这时候就需要手动控制 locust 是否应将请求视为成功或失败。

通过使用 catch_response 参数和 with 语句,即使响应代码正常,也可以将请求标记为失败:

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

举一反三,我们也可以将带有 200 响应码的请求标记为失败;

可以将 catch_response 参数与 with 语句一起使用,手动把 HTTP 的错误请求在统计信息中用正确作为测试报告:

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

以阿西河为例

from locust import HttpLocust, TaskSet, task
class UserTask(TaskSet):
    @task
    def job(self):
        with self.client.get('/', catch_response = True) as response:
            if response.status_code == 200:
                response.failure('Failed!')
            else:
                response.success()

class User(HttpLocust):
    task_set = UserTask
    min_wait = 1000
    max_wait = 3000
    host = "https://www.axihe.com"

catch_response = True :catch_response值为布尔类型,如果设置为 True, 允许该请求被标记为失败。

通过 client.get() 方法发送请求,将整个请求的给 response , 通过 response.status_code 得请求响应的 HTTP 状态码。

如果不为 200 则通过 response.failure('Failed!') 打印失败!

使用动态参数将对请求的分组

网站上的网址中包含动态参数是很常见的。

通常在 Locust 的统计信息中将这些 URL 分组在一起是很有意义的。

这可以通过将名称参数传递给 HttpSession 的不同请求方法来完成。

举个栗子:

# Statistics for these requests will be grouped under: /blog/?id=[id]
for i in range(10):
    self.client.get("/blog?id=%i" % i, name="/blog?id=[id]")

AXIHE / 精选资源

浏览全部教程

面试题

学习网站

前端培训
自己甄别

前端书籍

关于朱安邦

我叫 朱安邦,阿西河的站长,在杭州。

以前是一名平面设计师,后来开始接接触前端开发,主要研究前端技术中的JS方向。

业余时间我喜欢分享和交流自己的技术,欢迎大家关注我的 Bilibili

关注我: Github / 知乎

于2021年离开前端领域,目前重心放在研究区块链上面了

我叫朱安邦,阿西河的站长

目前在杭州从事区块链周边的开发工作,机械专业,以前从事平面设计工作。

2014年底脱产在老家自学6个月的前端技术,自学期间几乎从未出过家门,最终找到了满意的前端工作。更多>

于2021年离开前端领域,目前从事区块链方面工作了