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

Azure devops Azure DevOps:使用不同的运行设置在agentpool中的代理上并行运行测试,azure-devops,vstest,Azure Devops,Vstest,我们已经设置了一个agentpool,其中有3个标记为并行运行测试的代理。我们希望使用.runsettings文件的各种输入值来覆盖测试运行参数(OverrideTstrunParameters)&在各种代理上分发测试运行。e、 g 假设agentpool P1具有关联的代理A1、A2、A3。 我们需要代理A1配置测试运行参数executeTests=Functionty1,代理A2配置测试运行参数executeTests=Functionty2等 请告知我们是否可以使用executionPla

我们已经设置了一个agentpool,其中有3个标记为并行运行测试的代理。我们希望使用
.runsettings
文件的各种输入值来覆盖测试运行参数(OverrideTstrunParameters)&在各种代理上分发测试运行。e、 g

假设agentpool P1具有关联的代理A1、A2、A3。 我们需要代理A1配置测试运行参数executeTests=Functionty1,代理A2配置测试运行参数executeTests=Functionty2等


请告知我们是否可以使用executionPlan和选项Multi-Agent或Multi-Configuration来实现此功能。

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


我们找到的唯一管理方法是在测试框架代码中处理它。我们没有从runsettings加载,而是在测试任务之前的一个步骤中在代理上设置环境变量。然后,我们的测试框架将从环境变量加载。

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


我们找到的唯一管理方法是在测试框架代码中处理它。我们没有从runsettings加载,而是在测试任务之前的一个步骤中在代理上设置环境变量。然后,我们的测试框架将从环境变量加载。

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

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

*注意:
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定义,它可以使用不同的配置同时运行作业。另外,不同的配置会运行到指定的代理上

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


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

如果我没有误解的话,您想要的是在多个代理中使用多个配置运行测试

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

*注意:
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定义,它可以使用不同的配置同时运行作业。另外,不同的配置会运行到指定的代理上

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


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

通过执行以下操作,我可以在此处找到我的案例的解决方案

  • 在管道中添加一个名为
    executeTests
    的变量组&将各个变量组的名称、值分配为
    functionaty1、functionaty2
  • 在同一管道中添加了多个代理作业,并跨代理A1、A2、A3使用-(test.runsetting变量)$(functional1)等分配了
    覆盖测试运行参数

  • 上面的测试是基于每个代理作业的可用设置并行运行的

    通过执行下面的操作,我在这里找到了一个解决方案

  • 在管道中添加一个名为
    executeTests
    的变量组&将各个变量组的名称、值分配为
    functionaty1、functionaty2
  • 在同一管道中添加了多个代理作业,并跨代理A1、A2、A3使用-(test.runsetting变量)$(functional1)等分配了
    覆盖测试运行参数

  • 以上确实基于每个代理作业的可用设置并行运行测试

    您使用yaml build还是经典编辑器builds?@Shaykibaramczyk我们使用经典编辑器您使用yaml build还是经典编辑器builds?@Shaykibaramczyk我们使用经典编辑器不幸的是我们没有使用yaml Pipelines不幸的是我们没有使用YAML管道