【问题标题】:How to pass secrets into the test execution context from VSTS如何将秘密从 VSTS 传递到测试执行上下文
【发布时间】:2018-05-11 19:30:35
【问题描述】:

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

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

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

【问题讨论】:

    标签: c# azure-devops vstest


    【解决方案1】:

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

    高级步骤是:

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

    添加 .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>
      

    从您的测试代码中获取秘密值

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

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

      string clientSecret = TestContext.Properties["CLIENT_SECRET"].ToString();
      

    为您的密钥创建一个 VSTS 构建变量

    1. 导航到您的构建定义
    2. 点击“编辑构建定义”
    3. 点击“变量”
    4. 点击“添加”
    5. 为您的变量命名并设置其值
    6. 单击“值”字段末尾的锁定图标,将值设置为机密

    将您的 VSTS 测试任务设置为使用您创建的 .runsettings 文件

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

      $/project/unitTest.runsettings
      

    使用与 .runsettings 文件的键相同的名称显式传入构建变量

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

      -CLIENT_SECRET $(CLIENT_SECRET)
      

    【讨论】:

      猜你喜欢
      • 2021-10-24
      • 1970-01-01
      • 2021-06-10
      • 2021-09-09
      • 2019-01-10
      • 2015-12-16
      • 1970-01-01
      • 2017-08-06
      • 2019-09-12
      相关资源
      最近更新 更多