gpt4 book ai didi

visual-studio - 编码的 UI 测试等待 UI 线程很慢

转载 作者:行者123 更新时间:2023-12-03 10:53:43 24 4
gpt4 key购买 nike

我在 Visual Studio 2013 中将编码的 UI 测试添加到我的 ASP.NET MVC 解决方案中。在测试机器唤醒并开始填写表单字段之前,每个页面只会停留一分钟或更长时间。

经过一些实验(包括关闭 SmartMatch ),我发现只需调用

Playback.PlaybackSettings.WaitForReadyLevel = WaitForReadyLevel.Disabled;

解决了这个问题。但是,正如预期的那样,测试经常失败,因为 UI 线程还没有准备好让测试机器与表单上的控件进行交互。

打电话
Playback.PlaybackSettings.WaitForReadyLevel = WaitForReadyLevel.UIThreadOnly;

使测试运行可靠,如果缓慢。

有什么想法或建议吗?有没有希望有人能深入了解WaitForReady 机器中的魔法?除了 WaitForReadyLevel 之外,还有其他与 WaitForReady 相关的设置吗? ?

最佳答案

经过一些实验,我找到了似乎是一组设置组合,使我的编码 UI 测试能够可靠地全速运行——比我手动与网站交互的速度还要快。

注意:可以在此处找到相关的“文档”(如果您将博客称为“文档”):

  • Playback configuration settings
  • Retrying failed playback actions .

  • 该技巧需要对默认播放设置进行多次修改:
  • 设置 WaitForReadyLevel = WaitForReadyLevel.Disabled允许测试全速运行。但它也会禁用(慢!)魔法,它会一直等到可以安全地与页面上的控件交互。
  • 设置 MaximumRetryCount并附加一个错误处理程序来处理由于禁用“等待就绪”魔法而导致的大多数错误。因为我烤了 1 秒 Sleep进入重试逻辑,这个值实际上是我愿意等待页面加载并变得响应的秒数。
  • 显然,无法找到被测控件不是错误处理程序/重试机制处理的错误之一。如果新页面加载时间超过几秒钟,并且测试正在寻找在新页面加载之前不存在的控件,则测试无法找到该控件并且测试失败。设置 ShouldSearchFailFast = false通过为您提供页面加载的完整超时时间来解决该问题。
  • 设置 DelayBetweenActions = 500似乎解决了我偶尔看到的一个问题,即 UI 错过了页面加载后立即发生的按钮点击。测试机器似乎认为按钮被点击了,但网页没有响应。
  • “文档”说默认搜索超时是 3 分钟,但实际上它大于 10 分钟,所以我明确设置了 SearchTimeout到 1 秒(1000 毫秒)。

  • 为了将所有代码保存在一个地方,我创建了一个包含所有测试使用的代码的类。 MyCodedUITests.StartTest()[TestInitialize] 调用我的每个测试类中的方法。

    这段代码真的应该对所有测试只执行一次(而不是每个测试一次),但我想不出获得 Playback.PlaybackSettings 的方法。工作电话在 [AssemblyInitialization][ClassInitialization]例程。
    /// <summary> A class containing Coded UI Tests. </summary>
    [CodedUITest]
    public class UI_Tests
    {
    /// <summary> Common initialization for all of the tests in this class. </summary>
    [TestInitialize]
    public void TestInit()
    {
    // Call a common routine to set up the test
    MyCodedUITests.StartTest();
    }

    /// <summary> Some test. </summary>
    [TestMethod]
    public void SomeTest()
    {
    this.UIMap.Assert_HomePageElements();
    this.UIMap.Recorded_DoSomething();
    this.UIMap.Assert_FinalPageElements();
    }
    }


    /// <summary> Coded UI Test support routines. </summary>
    class MyCodedUITests
    {
    /// <summary> Test startup. </summary>
    public static void StartTest()
    {
    // Configure the playback engine
    Playback.PlaybackSettings.WaitForReadyLevel = WaitForReadyLevel.Disabled;
    Playback.PlaybackSettings.MaximumRetryCount = 10;
    Playback.PlaybackSettings.ShouldSearchFailFast = false;
    Playback.PlaybackSettings.DelayBetweenActions = 500;
    Playback.PlaybackSettings.SearchTimeout = 1000;

    // Add the error handler
    Playback.PlaybackError -= Playback_PlaybackError; // Remove the handler if it's already added
    Playback.PlaybackError += Playback_PlaybackError; // Ta dah...
    }

    /// <summary> PlaybackError event handler. </summary>
    private static void Playback_PlaybackError(object sender, PlaybackErrorEventArgs e)
    {
    // Wait a second
    System.Threading.Thread.Sleep(1000);

    // Retry the failed test operation
    e.Result = PlaybackErrorOptions.Retry;
    }
    }

    关于visual-studio - 编码的 UI 测试等待 UI 线程很慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20367855/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com