编码 UI - 如何获得可配置的 URL?

Coded UI - How to have configuraable URL's?

我创建了简单的编码 UI 测试,我在其中执行以下操作:

  1. 打开浏览器
  2. 转到网址
  3. 点击 hyperlink(link 在 webapp 的域内)。

UI映射生成后,我看到了一堆自动生成的映射代码。在 UI 映射文件 (class) 中,我看到 URL 基本上是硬编码的。

示例:

this.FilterProperties[HtmlDocument.PropertyNames.PageUrl] = "http://mytesturl:8000";
this.mUIItem50006598Hyperlink.FilterProperties[HtmlHyperlink.PropertyNames.Href] = "http://mytesturl:8000/link"

如何使我的自动化 UI 测试可配置,以便我可以 运行 针对不同环境(开发、测试、生产...等)进行相同的测试?

正如 Adrian 提到的,这是一个经常被重复但没有明确答案的问题。你可以找到一些关于我的方法的信息 HERE.

简而言之,如果您依赖 CodedUI 映射功能,您将无法动态配置环境,除非您的测试方法:

  • 调用辅助方法导航到基础 URL,而基础 URL 又取决于某种 数据驱动配置(An XML/app。配置文件、CSV、电子表格)。您可以在上面的 link 中找到关于如何解决我的问题的信息。
  • 调用映射器生成的方法。创建它时一定要假设您只是从基础导航 URL,而不是打开浏览器等

因此您的代码将如下所示:

[TestMethod]
public static void GenericTestMethod() {
    //get browserWindow from your test setup method etc.
    GoToEnvironmentBaseUrl(browserWindow);
    MapperGeneratedCodedUiMethod();
    AssertStuff();
}

public static void GoToEnvironmentBaseUrl(BrowserWindow browserWindow) {
    browserWindow.NavigateToUrl(new Uri("http://www."
            + ConfigurationManager.AppSettings.Get("EnvironmentURLMod")
            + ".com"));
}