跳转至

# Run load test

> Integrated since HttpRunner 3.1.0

With reuse of `Locust`, you can run load test without extra work.

    $ 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).

    $ 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`.

    $ 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!