5个版本 (重大更新)
0.5.0-alpha.1 | 2023年9月4日 |
---|---|
0.4.0 | 2023年1月26日 |
0.3.0 | 2022年1月25日 |
0.2.0 | 2022年1月22日 |
0.1.0 | 2021年12月10日 |
#289 in 测试
125KB
2.5K SLoC
Grillon
Grillon以优雅自然的方式在Rust中实现API测试。
- 优雅、直观且易于表达
- 内置测试函数
- 可扩展
请注意,API在v1.0.0.0之前会经历很多变化。
文档
入门指南
此示例使用Tokio作为异步运行时。通常,测试库用于单元测试或集成测试。你可以将grillon
声明为开发依赖项。
将grillon
添加到Cargo.toml
[dev-dependencies]
grillon = "0.5.0-alpha.1"
tokio = { version = "1", features = ["macros"] }
然后使用grillon
use grillon::{dsl::*, dsl::http::*, json, Grillon, StatusCode, Result};
use grillon::header::{HeaderValue, CONTENT_LENGTH, CONTENT_TYPE};
#[tokio::test]
async fn end_to_end_test() -> Result<()> {
Grillon::new("https://jsonplaceholder.typicode.com")?
.post("posts")
.payload(json!({
"title": "foo",
"body": "bar",
"userId": 1
}))
.assert()
.await
.status(is_success())
.status(is(201))
.response_time(is_less_than(700))
.json_body(is(json!({
"id": 101,
})))
.json_body(schema(json!({
"properties": {
"id": { "type": "number" }
}
})))
.json_path("$.id", is(json!(101)))
.headers(contains(vec![
(
CONTENT_TYPE,
HeaderValue::from_static("application/json; charset=utf-8"),
),
(CONTENT_LENGTH, HeaderValue::from_static("15")),
]))
.assert_fn(|assert| {
assert!(!assert.headers.is_empty());
assert!(assert.status == StatusCode::CREATED);
assert!(assert.json.is_some());
println!("Json response : {:#?}", assert.json);
});
Ok(())
}
依赖
~18–31MB
~516K SLoC