1 unstable release
new 0.6.2 | Mar 9, 2025 |
---|
#526 in Web programming
Used in apirquest_bin
115KB
2K
SLoC
ApiRquest_core
ApiRquest is a tool for testing Api Rest. Written in Rust, it allows you to use the Rhai scripting language to increase test flexibility. It uses Gherkin syntax for test scenarios.
Features
Example
Feature: api.restful-api.dev
Background:
# Use for command line
# https://restful-api.dev/
* def url = https://api.restful-api.dev
* def load read_rhai("scripts_rhai/scripts.rhai")
@scenario_get
Scenario: get
# Recovery of all items
Given path /objects
And header content-type: application/json
And request
"""
"""
When method get
Then status 200
And print "Response.response: ${response}"
@scenario_unknown_url
Scenario: Unknown url
Given path /objectsx
And header content-type: application/json
And request
"""
"""
When method get
Then status 404
And print "Response.response: ${response}"
And match ${response} == {"timestamp":"#string","status": 404,"error":"Not Found","path":"/objectsx"}
Scripting with Rhai
ApiRquest use Rhai for scripting scenario.
Predefined variables
Variables can be used in Rhai scripts
Variable | Description | Example |
---|---|---|
status | code status http | 200 |
headers | list of http request headers (map) | #{"content-length": "105", "content-type": "application/json", "date": "Fri, 24 Jan 2025 20:58:48 GMT", "server": "Rocket"} |
response | The http response (string) | {"date_event":"2025-01-24 20:55:00","temperature":20.05316,"humidite":60.10489,"sensor_name":"legardien"} |
request_duration_millis | Query duration in milliseconds (u128) | 80 |
.Define the rhai script to load
* def url = https://api.restful-api.dev
* def load read_rhai("scripts_rhai/scripts.rhai")
.Call a function with a parameter
# index retrieval (id)
# Call a function with a parameter
And call id = get_json_field ${response} "id"
The id
variable can be reused later in the delete operation.
.Path with a parameter
And print "Delete ${id}"
Given path /objects/${id}
Include ApiRquest in yours tests
use log::{debug, error};
use apirquest_core::Runner;
fn main() {
log4rs::init_file("config/log4rs.yaml", Default::default()).unwrap();
debug!("runner: apiRquest");
debug!("Load script file: ../../features/api_restful_api.feature");
let mut runner = Runner::new("./features/api_restful_api.feature".to_string());
runner.tags(vec!["@scenario_get"]);
let r = runner.run();
r.unwrap_or_else(|e| error!("Error: {}", e))
}
Using ApiRquest in a Cargo project
You can use apiRquest in your project to test your apirest.
Dependencies
~12–24MB
~368K SLoC