Automated tests 从VSTS测试中心运行按需自动测试时使用测试配置

Automated tests 从VSTS测试中心运行按需自动测试时使用测试配置,automated-tests,azure-devops,Automated Tests,Azure Devops,我的组织已经从在MTM中执行自动化测试转移到通过发布定义在VSTS测试中心中执行自动化测试。我们正在使用MSTest运行Selenium/C的测试 我们需要能够按需运行任何单独的测试、后期构建,并使用测试配置来控制浏览器。当通过MTM运行测试时,这是正常工作的 以前,当通过MTM运行测试时,我的MSTest TestContext的“属性”中填充了运行时参数,例如测试配置,例如TestContext.Properties[“\uu\uTFS\uTestConfigurationName\uuuu

我的组织已经从在MTM中执行自动化测试转移到通过发布定义在VSTS测试中心中执行自动化测试。我们正在使用MSTest运行Selenium/C的测试

我们需要能够按需运行任何单独的测试、后期构建,并使用测试配置来控制浏览器。当通过MTM运行测试时,这是正常工作的

以前,当通过MTM运行测试时,我的MSTest TestContext的“属性”中填充了运行时参数,例如测试配置,例如
TestContext.Properties[“\uu\uTFS\uTestConfigurationName\uuuu”]
。运行时属性也可以在生成的.trx文件中看到

现在,当通过VSTS测试中心运行测试时,这些值不再在TestContext中自动设置,也不会在.trx文件或发布部署日志中看到它们

对于如何将每个测试的测试配置值传播到TestContext(或通过其他代码访问)以便在测试运行时控制浏览器,是否有任何建议

  • 我考虑过创建一个.runsettings文件,但不知道如何将测试配置变量动态填充到该文件中
  • 我曾考虑在Selenium代码中查询测试运行/测试结果以确定测试点/配置,但不知道如何确定测试运行ID(我在发布日志中看到了测试运行ID,但不知道如何以编程方式访问它)
  • 我见过一个名为“VSTS测试扩展名”的VSTS扩展名,该扩展名旨在将VSTS变量注入.runsettings文件,但没有关于如何配置.runsettings文件以实现此目的的详细信息,而且旧的MTM样式的参数名似乎不起作用
  • 测试配置变量是否可以在VST中全局访问? 例如,我是否可以创建PowerShell发布任务以某种方式访问测试运行/测试点数据?除了将测试配置用于手动测试之外,Microsoft没有提供任何关于如何使用测试配置的说明

非常感谢您的帮助。

经过更多的审查,我唯一的选择似乎是一个巨大的黑客:

我注意到在发布日志中,[TEST_RUNID]是输出的,它将我指向$(TEST.RUNID)变量,我不知道该变量存在

我可以通过Powershell发布任务将运行ID输出到外部文件

然后,我可以让我的测试代码读取该文件,对VST执行API调用,查询该运行ID的测试结果,然后使用该响应为每个测试用例ID输出测试配置名称

然后,我可以将每个测试方法中的测试用例ID与服务调用响应中的测试用例ID进行匹配,并根据测试配置名称设置浏览器


唯一的问题是,如果同一测试在同一次运行中多次存在不同的配置,则可以通过每次测试开始时查询测试运行并根据状态检查已运行的配置(“挂起”等)来绕过该测试或者通过一些我还没有想到的其他方法。

经过更多的审查,我唯一的选择似乎是一个巨大的黑客:

我注意到在发布日志中,[TEST_RUNID]是输出的,它将我指向$(TEST.RUNID)变量,我不知道该变量存在

我可以通过Powershell发布任务将运行ID输出到外部文件

然后,我可以让我的测试代码读取该文件,对VST执行API调用,查询该运行ID的测试结果,然后使用该响应为每个测试用例ID输出测试配置名称

然后,我可以将每个测试方法中的测试用例ID与服务调用响应中的测试用例ID进行匹配,并根据测试配置名称设置浏览器


唯一的问题是,如果同一测试在同一次运行中多次存在不同的配置,则可以通过每次测试开始时查询测试运行并根据状态检查已运行的配置(“挂起”等)来绕过该测试或者通过一些我还没有想到的其他方法。

您无法从TestContext中获取它们,而runsettings文件无法在测试期间动态设置变量。您无法从TestContext中获取它们,而runsettings文件无法在测试期间动态设置变量。您是否找到了其他方法来查找TestRunID?否;尽管这种方法很粗糙,但效果相当不错。我已经离开了那个项目,不再使用VST了,所以我不确定现在是否有更好的替代方法;尽管这种方法很粗糙,但效果相当不错。我已经离开了那个项目,不再使用VST,所以我不确定现在是否有更好的替代方案。