需要传递到测试的测试执行上下文中的值通常通过VSTS中的“变量”传递。这些通常显示为环境变量。
这些值可能需要保密(来自服务主体的客户机密,密码等)。但是,如果单击VSTS变量窗口中给定变量的“锁定”按钮,将作为环境变量(与非秘密变量不同)导出到测试执行上下文中,{ {3}}。
如何传递秘密变量并在测试中检索它们?
答案 0 :(得分:4)
秘密变量需要作为参数传递给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)