【发布时间】:2018-05-11 19:30:35
【问题描述】:
需要传递到测试的测试执行上下文中的值通常通过 VSTS 中的“变量”传递。这些通常显示为环境变量。
这些值可能需要保密(来自服务主体的客户端机密、密码等)。但是,如果您在给定变量的 VSTS 变量窗口中单击“锁定”按钮,它不会作为环境变量导出到测试执行上下文中(与非秘密变量不同),@ 987654321@。
如何传递秘密变量并在测试中检索它们?
【问题讨论】:
标签: c# azure-devops vstest
需要传递到测试的测试执行上下文中的值通常通过 VSTS 中的“变量”传递。这些通常显示为环境变量。
这些值可能需要保密(来自服务主体的客户端机密、密码等)。但是,如果您在给定变量的 VSTS 变量窗口中单击“锁定”按钮,它不会作为环境变量导出到测试执行上下文中(与非秘密变量不同),@ 987654321@。
如何传递秘密变量并在测试中检索它们?
【问题讨论】:
标签: c# azure-devops vstest
秘密变量需要作为“测试运行参数”的参数传递给 vstest.exe 进程。这些将在测试执行期间替换为 .runsettings 文件中的值。
高级步骤是:
将以下 XML 添加到文件中。请注意,您将“值”设置为什么并不重要。无论如何,它都会被 VSTS 测试任务覆盖。将其设置为虚拟值或将导致测试在本地成功的值。
<?xml version="1.0" encoding="utf-8"?>
<RunSettings>
<TestRunParameters>
<Parameter name="CLIENT_SECRET" value="secret" />
</TestRunParameters>
</RunSettings>
将“TestContext”公共属性添加到您的测试类。该值将由测试运行程序在运行时设置。 请注意,此属性必须命名为 TestContext。
public TestContext TestContext { get; set; }
从 TestContext 变量中检索您的秘密
string clientSecret = TestContext.Properties["CLIENT_SECRET"].ToString();
将“设置文件”设置为您的 .runsettings 文件
$/project/unitTest.runsettings
在“覆盖测试运行参数”对话框中,添加以下内容(匹配您在 .runsettings 文件中为参数名称输入的键的拼写/大小写以及您添加到构建中的测试变量的拼写/大小写值的定义):
-CLIENT_SECRET $(CLIENT_SECRET)
【讨论】: