【问题标题】:TestContext TestRunParameters in Coded UI Test编码 UI 测试中的 TestContext TestRunParameters
【发布时间】:2015-09-16 00:24:24
【问题描述】:

按照程序概述herehere,我能够设置一个TestRunParameter 并在运行时在Unit 测试中访问它。然后,我在编码的 UI 测试中重复了完全相同的过程,但无法访问属性。

我的 .runsettings 文件:

<RunSettings>
  <TestRunParameters>
    <Parameter name="webAppUrl" value="http://localhost" />
  </TestRunParameters>
</RunSettings>

我的测试方法:

[TestMethod]
public void MyTest1()
{
    // This throws an error because Properties["webAppUrl"] is null
    string webAppUrl = TestContext.Properties["webAppUrl"].ToString();

    // etc...
}

Coded UI 测试是否需要额外配置才能访问这些运行时属性?

编辑: 我注意到在单元测试的上下文中,TestContext 是Microsoft.VisualStudio.TestPlatform.MSTestFramework.TestContextImplementation。在 Coded UI 测试中,TestContext 是Microsoft.VisualStudio.TestTools.TestTypes.Unit.UnitTestAdapterContext

【问题讨论】:

  • 好像是在 Visual Studio 2013 的更新中添加的 stackoverflow.com/a/33362632/155892
  • 我相信该功能只是片状。我在可靠地访问 unit 测试中的属性时遇到问题。有时我的 runsettings 文件中的属性存在,有时它们不存在。

标签: visual-studio coded-ui-tests azure-devops


【解决方案1】:

在编码的 UI 测试中无法访问 .runsettings TestRunParameter 部分中定义的参数。调试 Coded UI 测试时,会发现 TextContext.Properties 包含一些值,ResultsDirectory、AgentId 等。

但是,无法找到 TestRunParameter 部分中定义的参数。

您可以创建一个 .cvs 或 .xml 文件,而不是在 TestRunParameter 部分设置参数,并通过数据驱动访问数据。详情请查看这篇文章:

https://msdn.microsoft.com/en-us/library/ee624082.aspx

【讨论】:

  • 我需要使用属性,以便我可以使用不同的值,具体取决于测试是在开发环境中运行还是在集成环境中运行。从我可以看出,数据驱动测试中的数据不能在运行时更改。这就是我想要实现的目标:blogs.msdn.com/b/visualstudioalm/archive/2015/09/04/… 可以以这种方式使用数据驱动测试吗?
  • @SystemAccount,您说得对,数据驱动的测试在运行时无法更改。根据您的要求,您可以编写一些逻辑以根据不同的环境选择不同的值。对于使用 TestRunParameter 进行 Coded UI 测试,您可以考虑在 Microsoft UserVoice 网站上提交一项关于它的功能请求:visualstudio.uservoice.com/forums/121579-visual-studio/category/…
  • @Vicky-MSFT MS 应该表明 CodedUI 对他们很重要,他们会像他们经常使用其他产品一样支持和改进它,其他这些小问题足以让我们移动转移到其他 ui 测试框架。
  • 如何通过 TFS2015 构建定义将参数发送到编码的 UI 测试?我希望我可以使用 TestRunParameters,但后来我突然遇到了这个限制。
【解决方案2】:

尝试在 ClassInitialize 中使用它来代替测试方法参考下面的代码

[ClassInitialize]
public static void TestClassinitialize(TestContext context)
{
    var webAppUrl = context.Properties["webAppUrl"].ToString();
}

【讨论】:

  • 感谢您的建议。试过了,发现同样的问题。
猜你喜欢
  • 2015-07-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-23
  • 1970-01-01
  • 1970-01-01
  • 2011-11-27
  • 1970-01-01
相关资源
最近更新 更多