mirror of
https://github.com/httprunner/httprunner.git
synced 2026-05-17 00:07:38 +08:00
feat: integrate locust v1.0
This commit is contained in:
168
docs/user/run_loadtest.md
Normal file
168
docs/user/run_loadtest.md
Normal file
@@ -0,0 +1,168 @@
|
||||
# Run load test
|
||||
|
||||
> Integrated since HttpRunner 3.1.0
|
||||
|
||||
With reuse of [`Locust`][Locust], you can run load test without extra work.
|
||||
|
||||
```text
|
||||
$ locusts -V
|
||||
locust 1.0.3
|
||||
```
|
||||
|
||||
For full usage, you can run `locusts -h` to see help, and you will find that it is the same with `locust -h`.
|
||||
|
||||
The only difference is the `-f/--locustfile` argument. When you specify `-f` with a YAML/JSON testcase file, it will convert to pytest first and then run load test with HttpRunner's builtin locustfile(httprunner/ext/locust/locustfile.py).
|
||||
|
||||
```text
|
||||
$ locusts -f examples/postman_echo/request_methods/request_with_variables.yml
|
||||
2020-06-18 18:14:29.877 | INFO | httprunner.make:make_testcase:317 - start to make testcase: /Users/debugtalk/MyProjects/HttpRunner-dev/HttpRunner/examples/postman_echo/request_methods/request_with_variables.yml
|
||||
2020-06-18 18:14:29.878 | INFO | httprunner.make:make_testcase:390 - generated testcase: /Users/debugtalk/MyProjects/HttpRunner-dev/HttpRunner/examples/postman_echo/request_methods/request_with_variables_test.py
|
||||
2020-06-18 18:14:29.878 | INFO | httprunner.make:format_pytest_with_black:154 - format pytest cases with black ...
|
||||
reformatted /Users/debugtalk/MyProjects/HttpRunner-dev/HttpRunner/examples/postman_echo/request_methods/request_with_variables_test.py
|
||||
All done! ✨ 🍰 ✨
|
||||
1 file reformatted, 1 file left unchanged.
|
||||
[2020-06-18 18:14:30,241] LeodeMacBook-Pro.local/INFO/locust.main: Starting web interface at http://:8089
|
||||
[2020-06-18 18:14:30,249] LeodeMacBook-Pro.local/INFO/locust.main: Starting Locust 1.0.3
|
||||
```
|
||||
|
||||
In this case, you can reuse all features of [`Locust`][Locust].
|
||||
|
||||
```text
|
||||
$ locusts -h
|
||||
Usage: locust [OPTIONS] [UserClass ...]
|
||||
|
||||
Common options:
|
||||
-h, --help show this help message and exit
|
||||
-f LOCUSTFILE, --locustfile LOCUSTFILE
|
||||
Python module file to import, e.g. '../other.py'.
|
||||
Default: locustfile
|
||||
--config CONFIG Config file path
|
||||
-H HOST, --host HOST Host to load test in the following format:
|
||||
http://10.21.32.33
|
||||
-u NUM_USERS, --users NUM_USERS
|
||||
Number of concurrent Locust users. Only used together
|
||||
with --headless
|
||||
-r HATCH_RATE, --hatch-rate HATCH_RATE
|
||||
The rate per second in which users are spawned. Only
|
||||
used together with --headless
|
||||
-t RUN_TIME, --run-time RUN_TIME
|
||||
Stop after the specified amount of time, e.g. (300s,
|
||||
20m, 3h, 1h30m, etc.). Only used together with
|
||||
--headless
|
||||
-l, --list Show list of possible User classes and exit
|
||||
|
||||
Web UI options:
|
||||
--web-host WEB_HOST Host to bind the web interface to. Defaults to '*'
|
||||
(all interfaces)
|
||||
--web-port WEB_PORT, -P WEB_PORT
|
||||
Port on which to run web host
|
||||
--headless Disable the web interface, and instead start the load
|
||||
test immediately. Requires -u and -t to be specified.
|
||||
--web-auth WEB_AUTH Turn on Basic Auth for the web interface. Should be
|
||||
supplied in the following format: username:password
|
||||
--tls-cert TLS_CERT Optional path to TLS certificate to use to serve over
|
||||
HTTPS
|
||||
--tls-key TLS_KEY Optional path to TLS private key to use to serve over
|
||||
HTTPS
|
||||
|
||||
Master options:
|
||||
Options for running a Locust Master node when running Locust distributed. A Master node need Worker nodes that connect to it before it can run load tests.
|
||||
|
||||
--master Set locust to run in distributed mode with this
|
||||
process as master
|
||||
--master-bind-host MASTER_BIND_HOST
|
||||
Interfaces (hostname, ip) that locust master should
|
||||
bind to. Only used when running with --master.
|
||||
Defaults to * (all available interfaces).
|
||||
--master-bind-port MASTER_BIND_PORT
|
||||
Port that locust master should bind to. Only used when
|
||||
running with --master. Defaults to 5557.
|
||||
--expect-workers EXPECT_WORKERS
|
||||
How many workers master should expect to connect
|
||||
before starting the test (only when --headless used).
|
||||
|
||||
Worker options:
|
||||
|
||||
Options for running a Locust Worker node when running Locust distributed.
|
||||
Only the LOCUSTFILE (-f option) need to be specified when starting a Worker, since other options such as -u, -r, -t are specified on the Master node.
|
||||
|
||||
--worker Set locust to run in distributed mode with this
|
||||
process as worker
|
||||
--master-host MASTER_HOST
|
||||
Host or IP address of locust master for distributed
|
||||
load testing. Only used when running with --worker.
|
||||
Defaults to 127.0.0.1.
|
||||
--master-port MASTER_PORT
|
||||
The port to connect to that is used by the locust
|
||||
master for distributed load testing. Only used when
|
||||
running with --worker. Defaults to 5557.
|
||||
|
||||
Tag options:
|
||||
Locust tasks can be tagged using the @tag decorator. These options let specify which tasks to include or exclude during a test.
|
||||
|
||||
-T [TAG [TAG ...]], --tags [TAG [TAG ...]]
|
||||
List of tags to include in the test, so only tasks
|
||||
with any matching tags will be executed
|
||||
-E [TAG [TAG ...]], --exclude-tags [TAG [TAG ...]]
|
||||
List of tags to exclude from the test, so only tasks
|
||||
with no matching tags will be executed
|
||||
|
||||
Request statistics options:
|
||||
--csv CSV_PREFIX Store current request stats to files in CSV format.
|
||||
Setting this option will generate three files:
|
||||
[CSV_PREFIX]_stats.csv, [CSV_PREFIX]_stats_history.csv
|
||||
and [CSV_PREFIX]_failures.csv
|
||||
--csv-full-history Store each stats entry in CSV format to
|
||||
_stats_history.csv file
|
||||
--print-stats Print stats in the console
|
||||
--only-summary Only print the summary stats
|
||||
--reset-stats Reset statistics once hatching has been completed.
|
||||
Should be set on both master and workers when running
|
||||
in distributed mode
|
||||
|
||||
Logging options:
|
||||
--skip-log-setup Disable Locust's logging setup. Instead, the
|
||||
configuration is provided by the Locust test or Python
|
||||
defaults.
|
||||
--loglevel LOGLEVEL, -L LOGLEVEL
|
||||
Choose between DEBUG/INFO/WARNING/ERROR/CRITICAL.
|
||||
Default is INFO.
|
||||
--logfile LOGFILE Path to log file. If not set, log will go to
|
||||
stdout/stderr
|
||||
|
||||
Step load options:
|
||||
--step-load Enable Step Load mode to monitor how performance
|
||||
metrics varies when user load increases. Requires
|
||||
--step-users and --step-time to be specified.
|
||||
--step-users STEP_USERS
|
||||
User count to increase by step in Step Load mode. Only
|
||||
used together with --step-load
|
||||
--step-time STEP_TIME
|
||||
Step duration in Step Load mode, e.g. (300s, 20m, 3h,
|
||||
1h30m, etc.). Only used together with --step-load
|
||||
|
||||
Other options:
|
||||
--show-task-ratio Print table of the User classes' task execution ratio
|
||||
--show-task-ratio-json
|
||||
Print json data of the User classes' task execution
|
||||
ratio
|
||||
--version, -V Show program's version number and exit
|
||||
--exit-code-on-error EXIT_CODE_ON_ERROR
|
||||
Sets the process exit code to use when a test result
|
||||
contain any failure or error
|
||||
-s STOP_TIMEOUT, --stop-timeout STOP_TIMEOUT
|
||||
Number of seconds to wait for a simulated user to
|
||||
complete any executing task before exiting. Default is
|
||||
to terminate immediately. This parameter only needs to
|
||||
be specified for the master process when running
|
||||
Locust distributed.
|
||||
|
||||
User classes:
|
||||
UserClass Optionally specify which User classes that should be
|
||||
used (available User classes can be listed with -l or
|
||||
--list)
|
||||
```
|
||||
|
||||
Enjoy!
|
||||
|
||||
[Locust]: http://locust.io/
|
||||
Reference in New Issue
Block a user