- 博客(42)
- 收藏
- 关注
原创 locust官方文档-api-Runner classes
通过启动和停止用户来编排负载测试。在Environment实例上使用create_local_runner、create_master_runner或create_worker_runner方法之一来创建所需类型的运行器。停止任何正在运行的负载测试,并杀死运行者的所有greenlets开始运行负载测试Parameters:通过停止所有正在运行的用户来停止正在运行的负载测试**Returns:**当前运行的用户数量运行单进程负载测试的运行器用于跨多个进程和/或机器运行分布式负载测试的运行程序。
2022-06-06 17:52:34
347
原创 locust官方文档-api-EventHook class
事件钩子是locat.events.eventhook类的实例:简单的事件类,用于在Locust中为不同类型的事件提供钩子。以下是使用EventHook类的方法:如果reverse为True,则处理程序将按照插入它们的相反顺序运行注意:强烈建议在事件监听器中添加通配符关键字参数,以防止在未来版本中添加新参数时代码中断。...
2022-06-06 17:51:41
255
原创 locust官方文档-api-Event hooks
Locust提供了可用于以各种方式扩展Locust的事件挂钩。以下事件钩子在Environment.events下可用,这里也提到了locust.events可以在locust脚本的模块级别使用的事件(因为导入loccustfile时还没有创建Environment实例)。当CPU使用率超过运行程序时触发。CPU_WARNING_THRESHOLD(默认90%)在创建了Environment实例和Locust运行程序实例之后,在Locust启动时触发。最终用户的代码可以使用这个钩子来运行需要访问Env
2022-06-06 17:50:40
370
原创 locust官方文档-api-Environment class
更新用户类,使每个用户以相同的概率运行其指定的任务。如果为True,则会捕获运行用户内部发生的异常(并在UI/控制台中报告)。如果为False,将引发异常。为这个环境创建一个LocalRunner实例为这个环境创建一个MasterRunner实例Parameters:为这个环境创建一个web实例,并开始运行web服务器Parameters:为这个环境创建一个WorkerRunner实例Parameters:Locust内部使用的事件钩子,以及用于扩展Locust的功能参见事件钩子了解可用的
2022-06-06 17:49:33
432
原创 locust官方文档-api-ResponseContextManager class
这是一个Response类,它还充当上下文管理器,提供手动控制HTTP请求在Locust的统计信息中是否被标记为成功或失败的能力这个类是Response的子类,有两个额外的方法:success和failure。报告响应失败。如果exc不是python异常(比如字符串),它将被包装在CatchResponseError中例子:报告响应成功例子:...
2022-06-06 17:48:13
225
原创 locust官方文档-api-Response class
这个类实际上在python-requests库中,因为这是Locust用来发出HTTP请求的,但是它包含在Locust的API文档中,因为它在编写Locust负载测试时非常重要。您还可以在请求文档中查看Response类。Response对象,它包含服务器对HTTP请求的响应。易懂的编码,由charset_normalizer或chardet库提供。将连接释放回池。一旦调用此方法,就不能再访问底层raw对象。注意:通常不需要显式调用。响应的内容,以字节为单位。服务器返回的cookie的一个Coo
2022-06-06 17:46:16
272
原创 locust官方文档-api-Exceptions
在任务中抛出将中断User的异常当在任务中引发时,它相当于return语句。TaskSet也在内部使用。当在TaskSet的任务控制流中引发,而不是在任务中引发时,执行应该移交给父任务集。当在一个User任务中引发时,另一个User任务将立即被重新调度(不首先调用wait_time)...
2022-06-06 17:45:50
159
原创 locust官方文档-api-HttpSession class
该类执行web请求,并在请求之间保持(session-)cookies(以便能够登录和退出网站)。每个请求都被记录下来,以便locust可以显示统计数据.这是python-request请求的略微扩展版本。requests.Session类和这个类的工作原理完全相同。然而,用于发出请求的方法(get、post、delete、put、head、options、patch、request)现在可以接受url参数,该参数仅为url的路径部分,在这种情况下,url的主机部分将以HttpSession作为前缀。ba
2022-06-06 17:45:02
319
原创 locust官方文档-api-内置wait_time函数
返回一个函数,该函数将返回一个介于min_wait和max_wait之间的随机数。例子:返回一个函数,该函数只返回由wait_time参数指定的数字例子:返回一个跟踪任务运行时间的函数,每次调用它都会返回一个等待时间,该等待时间将尝试使任务执行之间的总时间等于wait_time参数指定的时间。在下面的例子中,任务总是每10秒执行一次,不管任务的执行时间是什么:如果一个任务执行超过指定的wait_time,那么在开始下一个任务之前等待时间将为0。返回一个函数,该函数将跟踪任务的运行时间,每次
2022-06-06 17:42:37
748
原创 locust官方文档-测试数据管理
有许多方法可以将测试数据放入测试中(毕竟,测试只是一个Python程序,它可以做任何Python可以做的事情)。Locust的事件让您可以细粒度地控制何时获取/发布测试数据。你可以在这里找到一个详细的例子。https://github.com/locustio/locust/tree/master/examples/test_data_management.py...
2022-06-01 11:45:24
129
原创 locust官方文档-参数化locustfiles
有两种主要的方法来参数化locustfile。、基本的环境变量:像任何程序一样,你可以使用环境变量:在linux / mac:MY_FUNKY_VAR=42 locust ...在windows:SET MY_FUNKY_VAR=42locust ...然后在locustfile中访问它们。import osprint(os.environ['MY_FUNKY_VAR'])自定义参数您可以使用init_command_line_parser事件向Locust添加自己的命令行参数
2022-06-01 11:45:00
322
原创 locust官方文档-运行一个后台greenlet
因为locust文件“just code”,所以没有什么可以阻止您生成自己的greenlet来与实际的load/Users并行运行。例如,您可以监视测试的失败率,并在它超过某个阈值时停止运行:from locust import eventsfrom locust.runners import STATE_STOPPING, STATE_STOPPED, STATE_CLEANUP, MasterRunner, LocalRunnerdef checker(environment): wh
2022-06-01 11:44:38
242
原创 locust官方文档-扩展Web UI
除了添加简单的web路由外,你还可以使用Flask Blueprints和模板来添加路由和扩展web UI,这样你就可以在内置Locust统计信息的同时显示自定义数据。这是更高级的,因为它还涉及到编写和包含路由提供的HTML和Javascript文件,但可以大大增强web UI的实用性和可定制性。在Locust源代码的示例目录中可以找到一个扩展web UI的工作示例,其中包含HTML和Javascript示例文件。...
2022-06-01 11:44:22
279
原创 locust官方文档-添加web线路
Locust使用Flask来服务web UI,因此很容易在web UI中添加web end-points。通过监听init事件,我们可以检索到Flask应用实例的一个引用,并使用它来建立一个新的路由:from locust import events@events.init.add_listenerdef on_locust_init(environment, **kw): @environment.web_ui.app.route("/added_page") def my_add
2022-06-01 11:43:56
125
原创 locust官方文档-请求上下文
request event有一个上下文参数,使您能够传递有关请求的数据(如用户名,标签等)。通过覆盖User.context()方法,可以在对请求方法的调用中直接设置它,也可以在用户级别设置它。请求方法的上下文:class MyUser(HttpUser): @task def t(self): self.client.post("/login", json={"username": "foo"}) self.client.get("/other_requ
2022-06-01 11:43:33
185
原创 locust官方文档-Event hooks
Event hooksLocust附带了许多事件钩子,可用于以不同的方式扩展Locust。例如,下面是如何设置一个事件监听器,它将在请求完成后触发:from locust import events@events.request.add_listenerdef my_request_handler(request_type, name, response_time, response_length, response, context, except
2022-06-01 11:43:11
332
原创 locust官方文档-Running in Docker
Docker的官方图片是locustio/locust。像这样使用它(假设locustfile.py存在于当前工作目录中):docker run -p 8089:8089 -v $PWD:/mnt/locust locustio/locust -f /mnt/locust/locustfile.pyDocker Compose下面是一个Docker Compose文件的示例,它可以用于启动master节点和worker 节点:version: '3'services: master:
2022-06-01 11:42:48
252
原创 locust官方文档-debugging_advanced.py
from locust import HttpUser, task, run_single_userfrom locust.exception import StopUserclass User1(HttpUser): host = "http://localhost" @task def hello_world(self): with self.client.get("/hello1", catch_response=True) as resp:
2022-06-01 11:42:24
180
原创 locust官方文档-在调试器中运行测试
在开发测试时,在调试器中运行Locust非常有用。除此之外,您还可以检查特定的响应或某些User实例变量。但是调试器在处理像Locust这样的复杂gevent应用程序时有时会遇到问题,而且框架本身有很多您可能不感兴趣的事情。为了简化这一点,Locust提供了一个名为run_single_user的方法:注意,这是一个相当新的特性,api可能会发生变化。from locust import HttpUser, task, run_single_userclass QuickstartUser(Ht
2022-06-01 11:41:40
701
原创 locust官方文档-跨节点通信
Communicating across nodes当以分布式模式运行Locust时,您可能希望在主节点和工作节点之间进行通信,以协调数据。这可以很容易地通过使用内置的消息钩子自定义消息来完成:from locust import eventsfrom locust.runners import MasterRunner, WorkerRunner# Fired when the worker receives a message of type 'test_users'def setup_te
2022-05-31 16:12:28
276
原创 locust官方文档-分布式命令选项
Options--master将locust设置为主模式。web界面将在此节点上运行。--worker设置locust为工作模式。--master-host=X.X.X.X可选地与–worker一起使用来设置主节点的主机名/IP(默认为127.0.0.1)--master-port=5557可选地与–worker一起使用来设置主节点的端口号(默认为5557)。--master-bind-host=X.X.X.X可选择与–master一起使用。确定主节点将绑定到的网络接口。默认为*(所有可
2022-05-31 16:06:51
384
原创 locust官方文档-Distributed load generation
Distributed load generation运行Locust的单个进程可以模拟相当高的吞吐量。对于一个简单的测试计划,它应该能够每秒发出数百个请求,如果使用fastttpuser,则可以达到数千个。但是,如果您的测试计划很复杂,或者您想要运行更多的负载,则需要扩展到多个进程,甚至可能是多台机器。为此,使用–master标志启动一个Locust的主模式实例,使用–worker标志启动多个工作实例。如果worker与您使用的master不在同一台机器上–master-host将它们指向运行mas
2022-05-31 15:58:23
605
原创 locust官方文档-自定义统计设置
Locust统计信息的默认配置在stats.py文件的常量中设置。可以通过覆盖这些值来调整它以满足特定的需求。为此,输入locust。统计模块和覆盖所需的设置import locust.statslocust.stats.CONSOLE_STATS_INTERVAL_SEC = 15它可以直接在Locust文件中完成,也可以提取到单独的文件中供所有Locust文件共同使用。可修改的统计参数列表如下:Parameter namePurposeSTATS_NAME_WIDTH控
2022-05-31 15:49:36
650
原创 locust官方文档-自定义参数
Custom arguments您可以使用init_command_line_parser事件向Locust添加自己的命令行参数。自定义参数也可以在web UI中显示和编辑。from locust import HttpUser, task, events@events.init_command_line_parser.add_listenerdef _(parser): parser.add_argument("--my-argument", type=str, env_var="LO
2022-05-31 15:44:24
768
原创 locust官方文档-所有可用的配置选项
下面是所有可用配置选项的表,以及它们对应的环境和配置文件键:命令行环境配置文件描述-f, --locustfileLOCUST_LOCUSTFILElocustfile要导入的Python模块,例如’ …/other_test.py '。a.py文件或一个包目录。默认为“locustfile”-H, --hostLOCUST_HOSThost主机加载测试的格式如下:http://10.21.32.33-u, --usersLOCUST_USERSuser
2022-05-31 15:05:59
347
原创 locust官方文档-Configuration File
Configuration File任何可以通过命令行参数设置的选项也可以通过配置文件格式的配置文件设置。Locust默认会查找~/.Locust.conf和./ Locust.conf,你可以使用–config标志指定一个额外的文件。例如:# master.conf in current directorylocustfile = locust_files/my_locust_file.pyheadless = truemaster = trueexpect-workers = 5hos
2022-05-31 14:22:14
277
原创 locust官方文档-Environment Variables
Environment Variables大多数可以通过命令行参数设置的选项也可以通过环境变量设置。例子: LOCUST_LOCUSTFILE=custom_locustfile.py locust
2022-05-31 14:16:25
321
原创 locust官方文档-Command Line Options(命令行选项)
命令行选项Locust主要通过命令行参数进行配置。locust --helpUsage: locust [OPTIONS] [UserClass ...]Common options: -h, --help 显示帮助信息并退出 -f LOCUSTFILE, --locustfile LOCUSTFILE 导入的Python模块,例如:'../other_test.py'.
2022-05-31 14:14:49
516
原创 locust官方文档-如何构建测试代码
如何构建测试代码重要提醒loccustfile .py只是一个由Locust导入的普通Python模块。从这个模块中,您可以自由地导入其他python代码,就像您在任何python程序中通常所做的那样。当前工作目录会自动添加到python的sys.path,因此任何驻留在工作目录中的python文件/模块/包都可以使用python import语句导入。对于小型测试,将所有测试代码保存在一个locustfile.py中应该没问题,但是对于较大的测试套件,可能需要将代码拆分为多个文件和目录。当然,如何构
2022-05-31 11:41:16
100
原创 locust官方文档-TaskSets
TaskSetstaskset是一种结构化web站点/系统测试的方法。如何构建测试代码重要提醒loccustfile .py只是一个由Locust导入的普通Python模块。从这个模块中,您可以自由地导入其他python代码,就像您在任何python程序中通常所做的那样。当前工作目录会自动添加到python的sys.path,因此任何驻留在工作目录中的python文件/模块/包都可以使用python import语句导入。对于小型测试,将所有测试代码保存在一个locustfile.py中应该没问题,
2022-05-30 18:16:11
334
原创 locust官方文档-HttpUser Class
HttpUser classHttpUser是最常用的用户。它添加了一个用于发出HTTP请求的客户机属性。from locust import HttpUser, task, betweenclass MyUser(HttpUser): wait_time = between(5, 15) @task(4) def index(self): self.client.get("/") @task(1) def about(self):
2022-05-30 18:07:12
440
原创 locust官方文档-Events
Events如果希望运行一些设置代码作为测试的一部分,通常将其放在locustfile的模块级别就足够了,但有时需要在运行中的特定时间执行一些操作。为此,Locust提供了事件挂钩。test_start and test_stop如果您需要在负载测试的开始或停止时运行一些代码,那么应该使用test_start和test_stop事件。你可以在loccustfile的模块级别为这些事件设置监听器:from locust import events@events.test_start.add_lis
2022-05-30 17:50:07
312
原创 locust官方文档-Tasks
Tasks当负载测试启动时,将为每个模拟用户创建一个User类的实例,它们将开始在自己的green thread中运行。当这些用户运行时,他们选择他们执行的任务,休眠一段时间,然后选择一个新任务,等等。这些任务是普通的python可调用对象,如果我们对一个拍卖网站进行负载测试,它们可以做诸如“加载起始页面”、“搜索某些产品”、“出价”等事情。@task 装饰器为用户添加任务最简单的方法是使用任务装饰器。from locust import User, task, constantclass M
2022-05-30 17:11:08
363
原创 locust官方文档-User Class
User class一个用户类代表一个用户(或者一个成群的蝗虫)。Locust将为每个被模拟的用户生成一个User类的实例。User类可以定义一些常见的属性。wait_time属性User的wait_time方法可以很容易地在每个任务执行后引入延迟。如果没有指定wait_time,下一个任务将在一个任务完成后立即执行。四种传参方式:1.固定的时间(constant)2.介于最小值和最大值之间的随机时间(between)例如,让每个用户在每次任务执行之间等待0.5 - 10秒:from loc
2022-05-30 17:10:41
509
原创 locust官方文档-编写一个locust文件
现在,让我们看一个更完整/更现实的测试示例:import timefrom locust import HttpUser, task, betweenclass QuickstartUser(HttpUser): wait_time = between(1, 5) @task def hello_world(self): self.client.get("/hello") self.client.get("/world") @tas
2022-05-27 18:20:12
308
原创 python版本不兼容
今天安装python3.10+pycharm,在使用pip install 时总是报乱七八糟的错,最后将python版本降到3.8,安装成功。
2021-10-20 21:07:44
1851
原创 Pyhon环境搭建
1.官网下载python,安装,勾选配置path2.cmd中输入python查看版本 是否安装正常3.IDEA-setting-plugins-搜索python安装插件
2019-07-10 19:52:00
200
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人