hurl/docs/running-tests.md
2022-09-28 18:35:02 +10:00

3.0 KiB
Raw Blame History

Running Tests

Use --test Option

Hurl is run by default as an HTTP client, returning the body of the last HTTP response.

$ hurl hello.hurl
Hello World!

When multiple input files are provided, Hurl outputs the body of the last HTTP response of each file.

$ hurl hello.hurl assert_json.hurl
Hello World![
  { "id": 1, "name": "Bob"},
  { "id": 2, "name": "Bill"}
]

For testing, we are only interested in the asserts results, we don't need the HTTP body response. To use Hurl as a test tool with an adapted output, you can use --test option:

$ hurl --test hello.hurl assert_json.hurl
hello.hurl: Running [1/2]
hello.hurl: Success (6 request(s) in 245 ms)
assert_json.hurl: Running [2/2]
assert_json.hurl: Success (8 request(s) in 308 ms)
--------------------------------------------------------------------------------
Executed files:  2
Succeeded files: 2 (100.0%)
Failed files:    0 (0.0%)
Duration:        561 ms

Or, in case of errors:

$ hurl --test hello.hurl error_assert_status.hurl 
hello.hurl: Running [1/2]
hello.hurl: Success (6 request(s) in 258 ms)
assert_json.hurl: Running [2/2]
error: Assert status code
  --> assert_json.hurl:6:8
   |
 6 | HTTP/* 200
   |        ^^^ actual value is <301>
   |

assert_json.hurl: Failure (5 request(s) in 230 ms)
--------------------------------------------------------------------------------
Executed files:  2
Succeeded files: 1 (50.0%)
Failed files:    1 (50.0%)
Duration:        499 ms

You can use --glob option to test files that match a given pattern:

$ hurl --test --glob "test/integration/**/*.hurl"

Generating an HTML Report

Hurl can also generate an HTML report by using the --report-html HTML_DIR option.

If the HTML report already exists, the test results will be appended to it.

Hurl HTML Report

The input Hurl files (HTML version) are also included and are easily accessed from the main page.

Hurl HTML file

Use Variables in Tests

To use variables in your tests, you can:

You will find a detailed description in the Injecting Variables section of the docs.