12 个版本
0.4.0 | 2023 年 10 月 20 日 |
---|---|
0.3.1 | 2022 年 7 月 21 日 |
0.3.0 | 2022 年 4 月 20 日 |
0.2.1 | 2021 年 3 月 4 日 |
0.0.2 | 2019 年 10 月 25 日 |
#81 in 测试
1,650 每月下载量
用于 15 个工具包 (10 个直接使用)
210KB
4K SLoC
dockertest-rs
从 Rust 集成测试套件中控制 Docker 容器。提供全面的管理支持,并自动清理。
此工具包为您提供了以下功能以满足 Docker 测试需求
- 确保 Docker 容器根据
WaitFor
策略被调用并运行。 - 自定义您自己的或使用包含的电池之一。
- 通过其
ip
地址与测试体中的RunningContainer
交互。 - 使用
inject_container_name
将容器名称注入环境变量中,以设置容器间通信。 - 测试结束后(无论成功还是失败)清理每个启动的容器。
- 并发功能。所有测试都隔离到每个测试的单独网络中,并具有唯一生成的容器名称。
请参阅 工具包文档 以获取详细说明。
示例
这是一个简单的示例,展示了测试的一般结构。
use dockertest::{DockerTest, TestBodyContainer};
use std::sync::{Arc, Mutex};
#[test]
fn hello_world_test() {
// Define our test instance, will pull images from dockerhub.
let mut test = DockerTest::new().with_default_source(DockerHub);
// Construct the container specification to be added to the test.
//
// A container specification can have multiple properties, depending on how the
// lifecycle management of the container should be handled by dockertest.
//
// For any container specification where dockertest needs to create and start the container,
// we must provide enough information to construct a composition of
// an Image configured with provided environment variables, arguments, StartPolicy, etc.
let hello = TestBodyContainer::with_repository("hello-world");
// Populate the test instance.
// The order of compositions added reflect the execution order (depending on StartPolicy).
test.provide_container(hello);
let has_ran: Arc<Mutex<bool>> = Arc::new(Mutex::new(false));
let has_ran_test = has_ran.clone();
test.run(|ops| async move {
// A handle to operate on the Container.
let _container = ops.handle("hello-world");
// The container is in a running state at this point.
// Depending on the Image, it may exit on its own (like this hello-world image)
let mut ran = has_ran_test.lock().unwrap();
*ran = true;
});
let ran = has_ran.lock().unwrap();
assert!(*ran);
}
测试
测试此库需要以下条件
- 在本地主机上可用的 docker 守护进程。
- 在您的环境中设置
DOCKERTEST_BUILD_TEST_IMAGES=1
,将触发测试镜像的构建。
测试设计为并行运行,不应与现有系统镜像冲突。本地镜像使用前缀 dockertest-rs/
构建。
在 docker 中运行 dockertest
要在 docker 中运行 dockertest
,您需要设置以下环境变量
DOCKERTEST_CONTAINER_ID_INJECT_TO_NETWORK=your_container_id/名称
DOCKERTEST_CONTAINER_ID_INJECT_TO_NETWORK
必须设置为 dockertest
容器运行时的 ID 或名称。
依赖项
约 12–24MB
约 380K SLoC