我有一个 Rust 项目,其中的测试使用
libtest_mimic
来运行用 Cucumber 编写的测试。在整个测试过程中,tracing
-crate 用于记录日志。理想情况下,我想通过命令行设置日志级别,但是 libtest_mimic
有自己的 Arguments
结构,它使用 let args: Arguments = Arguments::from_args();
解析命令行参数。
问题是 Arguments::from_args()
不允许任何不在参数内的命令行参数。如果我在测试规范之后在命令行中添加任何内容(例如--loglevel WARN
),我会收到一个错误,这是无法识别的(因为它不在Arguments
结构中)。所以我必须修改命令行-args 以某种方式在 libtest_mimic 处理之前删除 --lovlevel WARN
部分。
这看起来相当错误和丑陋,我想也许有更好的方法,但我不知何故错过了。 有谁知道如何在 libtest_mimic-tests 中使用跟踪?
问题是
不允许任何不在参数内的命令行参数。Arguments::from_args()
Arguments
实现了 clap::Args
,因此您可以将其嵌入到另一个 clap
参数结构中:
#[derive(clap::Parser)]
struct MyArguments {
#[command(flatten)]
test_args: libtest_mimic::Arguments,
#[arg(long)]
log_level: Option<String>,
}