Azure DevOps:使用不同的运行设置在代理池中的代理上并行运行测试



我们已经设置了一个代理池,其中标记了 3 个代理,用于并行运行测试。我们希望.runsettings文件使用各种输入值来覆盖测试运行参数(overrideTestrunParameters(并在各种代理上分发我们的测试运行。例如,

假设代理池 P1 具有关联的代理 A1、A2、A3。 我们需要代理 A1 来配置测试运行参数执行测试 = 功能1,代理 A2 来配置测试运行参数执行测试 = 功能2 等,

请让我们知道是否可以使用带有选项多代理或多配置的执行计划来实现它。

我能够通过以下操作在这里找到适合我的情况的解决方案

  1. 在管道中添加一个名为executeTests的变量组,并分配名称、相应变量组的值作为Functionality1, Functionality2等,
  2. 在同一管道中添加了多个代理作业,并在代理 A1、A2、A3 中分配了带有 -(test.runset 变量( $(Function1( 等的Override test run parameters

上述内容确实根据每个代理作业的可用设置并行运行测试

因此,如果我没有误解,您想要的是将具有多配置的测试运行到多代理中?

如果是,我最好建议你可以申请matrix管道来实现你想要的。

*注意:Matrix是仅支持YAML管道的新功能。如果要在自己的一侧使用矩阵,则必须使用 YAML 来配置管道。

有关如何在这种情况下应用矩阵,您可以参考以下简单示例:

strategy:
matrix:
execTest1:
agentname: "Agent-V1"
executeTests: "Functionality1"
execTest2:
agentname: "Agent-V2"
executeTests: "Functionality2"
execTest3:
agentname: "Agent-V3"
executeTests: "Functionality3"
maxParallel: 3
pool:
name: '{pool name}'
demand:
- agent-name -equals $(agentname)
...
...

使用此类 YAML 定义,它可以同时以不同的配置运行作业。此外,不同的配置运行到指定的代理上。

注意:请确保您的项目支持并行消费。

有关更多详细信息,请参阅此处。

不支持使用不同的运行设置,甚至不支持覆盖设置。测试任务期望它在所有代理之间保持一致。 它将使用为第一个配置的哪个来启动测试任务。 例如,如果要传递覆盖变量 $(Agent.Name(,则无论哪个代理选取它,它都将使用第一个代理名称。

我们发现管理它的唯一方法是在我们的测试框架代码中处理它。 我们不是从运行设置加载,而是在测试任务之前的步骤中在代理上设置环境变量。 然后我们的测试框架将从环境变量加载。

最新更新