如何将秘密从VSTS传递到测试执行上下文中

时间:2018-05-11 19:30:35

标签: c# azure-devops vstest

需要传递到测试的测试执行上下文中的值通常通过VSTS中的“变量”传递。这些通常显示为环境变量。

这些值可能需要保密(来自服务主体的客户机密,密码等)。但是,如果单击VSTS变量窗口中给定变量的“锁定”按钮,作为环境变量(与非秘密变量不同)导出到测试执行上下文中,{ {3}}。

如何传递秘密变量并在测试中检索它们?

1 个答案:

答案 0 :(得分:4)

秘密变量需要作为参数传递给vstest.exe进程作为“测试运行参数”。在测试执行期间,这些将被替换为.runsettings文件中的值。

高级步骤是:

  1. 将.runsettings文件添加到Visual Studio项目
  2. 获取C#代码中的秘密值
  3. 为您的秘密创建VSTS构建变量
  4. 将您的VSTS测试任务设置为使用您创建的.runsettings文件
  5. 使用与.runsettings文件的密钥相同的名称显式传入构建变量
  6. 添加.runsettings文件

    1. 创建扩展名为“runsettings”(* .runsettings)的XML文件并将其添加到项目中
    2. 将以下XML添加到该文件中。请注意,将“值”设置为什么并不重要。无论如何,它将被VSTS测试任务覆盖。将其设置为虚拟值或将导致测试在本地成功的内容。

      <?xml version="1.0" encoding="utf-8"?>
      <RunSettings>
          <TestRunParameters>
              <Parameter name="CLIENT_SECRET" value="secret" />
          </TestRunParameters>
      </RunSettings>
      
    3. 从测试代码中获取秘密值

      1. 将“TestContext”公共属性添加到测试类。该值将由测试运行器在运行时设置。 请注意,此属性必须命名为TestContext。

        public TestContext TestContext { get; set; }
        
      2. 从TestContext变量中检索您的秘密

        string clientSecret = TestContext.Properties["CLIENT_SECRET"].ToString();
        
      3. 为您的秘密创建一个VSTS构建变量

        1. 导航到您的构建定义
        2. 点击“修改构建定义”
        3. 点击“变量”
        4. 点击“添加”
        5. 命名您的变量&amp;设置其值
        6. 点击“值”字段末尾的锁定图标,将值设置为机密
        7. 将您的VSTS测试任务设置为使用您创建的.runsettings文件

          1. 导航到您的构建定义
          2. 点击“修改构建定义”
          3. 点击“任务”按钮
          4. 选择“测试”任务(如果没有,则添加一个)
          5. 将“设置文件”设置为.runsettings文件

            $/project/unitTest.runsettings
            
          6. 使用与.runsettings文件的密钥相同的名称显式传入构建变量

            1. 导航到您的构建定义
            2. 点击“修改构建定义”
            3. 点击“任务”按钮
            4. 选择“测试”任务
            5. 在“覆盖测试运行参数”对话框中,添加以下内容(匹配您放入.runsettings文件中的键的拼写/大小写,用于参数名称和测试变量的拼写/大小写)添加到值的构建定义中):

              -CLIENT_SECRET $(CLIENT_SECRET)