Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/rust/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Testing 如何在rust中将github操作的参数传递给单元测试_Testing_Rust_Arguments_Github Actions_Github Secret - Fatal编程技术网

Testing 如何在rust中将github操作的参数传递给单元测试

Testing 如何在rust中将github操作的参数传递给单元测试,testing,rust,arguments,github-actions,github-secret,Testing,Rust,Arguments,Github Actions,Github Secret,我想使用github secrets将一个秘密API密钥注入到我的单元测试函数中,以防止源代码中存在ay API密钥: 我的(简化的)测试是将APIKEY定义为字符串常量 const APIKEY:&str=“ddbe2befdeadbeefa2d20f09b4a694”; #[测试] fn测试_apikey(){ 断言!(usekey(APIKEY).is_ok()); } 现在,我想从测试可执行文件在运行时获得的参数中获取API密钥: > cargo test -- ddbe2bef

我想使用github secrets将一个秘密API密钥注入到我的单元测试函数中,以防止源代码中存在ay API密钥:

我的(简化的)测试是将APIKEY定义为字符串常量

const APIKEY:&str=“ddbe2befdeadbeefa2d20f09b4a694”; #[测试] fn测试_apikey(){ 断言!(usekey(APIKEY).is_ok()); } 现在,我想从测试可执行文件在运行时获得的参数中获取API密钥:

> cargo test -- ddbe2befdeadbeefa2d20f09b4a694";
但是当我尝试使用以下代码获取第一个参数时:

let args:Vec=env::args().collect();
设apikey=&args[1];
我意识到,每当我为
货物测试--
提供参数时,我的测试将不再被处理

以下是不提供参数的调用:

▶ cargo test -v --                                 
[..]
    Finished test [unoptimized + debuginfo] target(s) in 0.05s
     Running `/home/pat/git/myprg/target/debug/deps/myrg-7e0bdeadbeef95ff`

running 7 tests
test tests::test_cityid ... ok
test tests::test_coordinate ... ok
test tests::test_apikey ... ok
test tests::test_city ... ok
test tests::test_language ... ok
test tests::test_units ... ok
test tests::test_cities ... ok

test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out
但当我尝试在测试的参数中提供apikey时,不会处理任何测试:

▶ cargo test -v -- ddbe2befdeadbeefa2d20f09b4a694                                 
[..]
    Finished test [unoptimized + debuginfo] target(s) in 0.05s
     Running `/home/pat/git/myprg/target/debug/deps/myprg-7e0bdeadbeef95ff ddbe2befdeadbeefa2d20f09b4a694";`

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 7 filtered out
您可以看到,连接了apikey的测试被正确调用

我不明白为什么会发生这种情况,深入研究锈蚀测试文档并没有让我找到有用的东西


你有什么建议吗?

似乎通过程序参数给出秘密并不是这样做的

相反,请使用以下方法:

fn apikey()->字符串{
匹配std::env::var(“APIKEY”){
Ok(键)=>键,
错误(\u r)=>{
eprintln!(“错误:使用环境有效的API密钥设置API密钥”);
“”.to_字符串()
}
}
}
…我可以通过以下操作将API密钥注入github操作中的测试:

env:
APIKEY:${{secrets.APIKEY}}
工作:
建造:
步骤:
-名称:运行测试
运行:货物测试——详细

谢谢你的帮助

您可以将APIKEY作为机密添加到工作流上的局部变量(
env:API_KEY=${{secrets.APIKEY}}
)中,然后将其作为env变量导入测试函数以使用它。python中的示例:
apikey=os.environ['API\u KEY']
。你试过那样吗?谢谢!我可以成功地实现一个从环境中获取密钥的
fn apikey()
,正如您所建议的:通过使用
std::env::var(“apikey”)