gpt4 book ai didi

python-3.x - 如何使用 PyTest 使用 Locust 执行负载测试?

转载 作者:行者123 更新时间:2023-12-01 05:49:52 31 4
gpt4 key购买 nike

您认为可以使用 PyTest 执行负载测试吗?
例如:

import locust

class UsersTest(locust.TaskSet):

@locust.seq_task(1)
def api_get_task(self):
self.client.get("/api", name="GET /api") # Самое действие

@locust.seq_task(2)
def api_post_task(self):
payload = {"username": "user1", "password": "123456"}
self.client.post("/api", data=payload, name="POST /api")

class SituationTest(locust.HttpLocust):

task_set = UsersTest
min_wait = 1000
max_wait = 2000
host = "http://127.0.0.1:3000"

所以这里是 2 个 url 的 2 个简单任务的示例。进入类 UsersTest 我有我的测试用例本身。进入类 SituationTest 我有我的参数。

所以问题是如何将这 2 个类集成到 pytest 固定装置装饰器中并将其拆分为 test_file.py 和 conftest.py?

最佳答案

此外,您可以将 locust 用作库而不是 CLI。

import gevent
import locust


class UsersTest(locust.SequentialTaskSet):

@locust.task
def api_get_task(self):
self.client.get("/api", name="GET /api") # Самое действие

@locust.task
def api_post_task(self):
payload = {"username": "user1", "password": "123456"}
self.client.post("/api", data=payload, name="POST /api")


class SituationTest(locust.HttpUser):

task_set = UsersTest
min_wait = 1000
max_wait = 2000
host = "http://127.0.0.1:3000"


def test__your_pytest_example():
env = locust.env.Environment(user_classes=[SituationTest])
env.create_local_runner()
gevent.spawn(locust.stats.stats_history, env.runner)
env.runner.start(1, spawn_rate=1)
gevent.spawn_later(10, lambda: env.runner.quit())
env.runner.greenlet.join()

assert env.stats.total.avg_response_time < 60
assert env.stats.total.num_failures == 0
assert env.stats.total.get_response_time_percentile(0.95) < 100
查看官方文档: https://docs.locust.io/en/stable/use-as-lib.html

关于python-3.x - 如何使用 PyTest 使用 Locust 执行负载测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55914502/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com