You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在C#单元测试中访问Azure Pipeline的秘密环境变量?

在C#单元测试中访问Azure Pipeline秘密变量的两种方案

方案一:直接读取环境变量

Azure Pipeline会将配置的秘密变量自动注入测试进程的环境变量中(变量名建议用大写+下划线格式,避免因命名规则转换导致的读取问题)。在C#单元测试中,直接使用Environment.GetEnvironmentVariable方法读取即可:

// 获取登录用户名
string loginUsername = Environment.GetEnvironmentVariable("SELENIUM_BOT_USERNAME");
// 获取登录密码
string loginPassword = Environment.GetEnvironmentVariable("SELENIUM_BOT_PASSWORD");

注意点

  • 秘密变量的内容会被Azure自动屏蔽,不会在Pipeline日志中明文输出,无需担心泄露。
  • 如果变量名包含特殊字符(如.),Pipeline会自动将其转换为_,比如selenium.bot.username会变成SELENIUM_BOT_USERNAME,建议直接用大写下划线命名变量避免适配问题。

方案二:通过命令行参数传递

若偏好通过命令行参数传递变量,可按以下步骤操作:

1. 在Azure Pipeline任务中配置参数

如果使用dotnet test命令执行测试,在Pipeline的任务脚本中添加参数:

dotnet test --logger trx --bot-username $(SELENIUM_BOT_USERNAME) --bot-password $(SELENIUM_BOT_PASSWORD)

如果使用VSTest任务,在任务的Arguments输入框中填写:

--bot-username $(SELENIUM_BOT_USERNAME) --bot-password $(SELENIUM_BOT_PASSWORD)

2. 在C#测试中解析命令行参数

通过Environment.GetCommandLineArgs()获取所有命令行参数,自行解析目标值:

var commandLineArgs = Environment.GetCommandLineArgs();
string botUsername = null;
string botPassword = null;

for (int i = 0; i < commandLineArgs.Length; i++)
{
    switch (commandLineArgs[i])
    {
        case "--bot-username":
            if (i + 1 < commandLineArgs.Length)
                botUsername = commandLineArgs[i + 1];
            break;
        case "--bot-password":
            if (i + 1 < commandLineArgs.Length)
                botPassword = commandLineArgs[i + 1];
            break;
    }
}

如果项目允许引入第三方依赖,也可以使用CommandLineParser这类库简化参数解析,但原生代码已足够满足需求。

注意点

  • 秘密变量作为命令行参数传递时,Azure会自动屏蔽其明文值,日志中不会泄露敏感信息。
  • 确保参数名在Pipeline配置和测试代码中完全一致,避免拼写错误导致读取失败。

内容的提问来源于stack exchange,提问作者Big Ian

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 10:45:43