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

时间:2020-01-27 12:28:24

标签: azure-devops vstest

我们设置了一个带有3个代理的代理池,用于并行运行测试。我们想为.runsettings文件使用各种输入值来覆盖测试运行参数(overrideTestrunParameters)并在各种代理上分发测试运行。例如,

让我们假设代理池P1具有关联的代理A1,A2,A3。 我们需要代理A1来配置测试运行参数executeTests = Functionality1,代理A2来配置测试运行参数executeTests = Functionality2等,

请让我们知道是否可以将executePlan与选项Multiagent或Multi Configuration一起使用来实现它。

3 个答案:

答案 0 :(得分:1)

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

如果是,我建议您可以在管道中使用matrix来实现所需的功能。

*注意:Matrix是仅支持 YAML 管道的新功能。如果您想使用 matrix ,则必须使用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定义,它可以同时使用不同的配置运行该作业。另外,将不同的配置运行到指定的代理上。

注意:请确保您的项目支持并行使用。

有关更多详细信息,请参见this

答案 1 :(得分:1)

通过下面的操作,我能够找到适合我的情况的解决方案

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

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

答案 2 :(得分:0)

不支持使用不同的运行设置,甚至不覆盖设置。测试任务期望所有代理之间的一致性。它将使用为第一个配置的任何一个来启动测试任务。例如,如果您要传递一个覆盖变量$(Agent.Name),则它将使用第一个座席名称,而不管哪个座席选择了它。

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