2017-09-01 100 views
0

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

这是我们能够按需运行任何单独测试,构建后和使用测试配置来控制浏览器的要求。通过MTM运行测试时,这没有任何问题。

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

现在,当通过VSTS测试集线器运行测试时,这些值不再在TestContext中自动设置,也不会在.trx文件或我的Release部署日志中看到它们。

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

  • 我已经考虑创建一个.runsettings文件,但我不知道是如何测试配置变量将被动态地填充到该文件。
  • 我已经考虑尝试在我的Selenium代码中查询测试运行/测试结果来确定测试点/配置,但我不知道如何确定测试运行ID(我在发布日志中看到测试运行ID,但不知道如何以编程方式访问它)
  • 我已经看到一个名为'VSTS测试扩展'的VSTS扩展,它声称将VSTS变量注入到.runsettings文件中,但是没有关于如何配置.runsettings文件以完成此操作,而旧的MTM样式参数名似乎不起作用。
  • 测试配置变量以某种方式在VSTS中全局访问吗? 也就是说我可以创建一个PowerShell发布任务来以某种方式访问​​测试运行/测试点数据吗?除了将它们用于手动测试之外,Microsoft不提供关于如何使用测试配置的任何说明。

任何帮助,非常感谢。

+0

您无法从TestContext获取它们,并且runsettings文件无法在测试期间动态设置变量。 –

回答

0

一些审核之后,似乎我唯一的选择是一个巨大的黑客:

我注意到,在发布日志,在[TEST_RUNID]是输出,这点我到$(test.runid)变量,我不知道存在。

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

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

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

唯一的问题是如果同一测试在不同配置的同一次运行中存在多次,可以通过每次开始测试时查询测试运行并根据测试结果检查哪个配置已经运行状态(“待定”等)或者我还没有想过的其他方式。