gpt4 book ai didi

c# - 编码 ui 测试失败后的操作

转载 作者:行者123 更新时间:2023-11-30 16:57:04 26 4
gpt4 key购买 nike

我在日常运行中使用多个 c# Ordered 测试。每个测试都需要恢复到快照,这样所有数据和更改都会丢失(这对我来说没问题)

但是...有时测试会失败,所有信息都会丢失。 Visual Studio 提供了很好的解释和截图(很有用)

我的问题:有没有一种方法或功能可以实现如果测试失败,一些文件(日志/崩溃)被复制到网络位置(硬编码功能或链接到 bat/脚本文件或播放功能中的东西) )我在我的测试中尝试使用 try catch 选项,但是你失去了从 visual studio 获得的好信息。如果没有办法实现这一点,我将返回 try catch

问候

根据要求的一些代码:

这是我使用的测试方法:

//playback options + delay
Logging.playback();
Try{
Mouse.Click(uITaskListItems);
foreach (WinControl TaskList in uITaskListItems.GetChildren())
{
if (TaskList.Name.Contains(Variables.TaskItem1))
{
Mouse.Click(TaskList, MouseButtons.Right);
Mouse.Click(uIListMonitor);
break;
}
}
}catch(Exception ex){
Logging.Log(ex.Message);
Assert.Fail();

和播放选项

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;
}
//playback options
public static void playback()
{
Playback.PlaybackSettings.MatchExactHierarchy = true;
Playback.PlaybackSettings.SmartMatchOptions = SmartMatchOptions.Control;
Playback.PlaybackSettings.SmartMatchOptions = SmartMatchOptions.TopLevelWindow;
Playback.PlaybackSettings.SmartMatchOptions = SmartMatchOptions.None;
Playback.PlaybackSettings.SearchTimeout = 2000;
Playback.PlaybackSettings.ShouldSearchFailFast = true;
Playback.PlaybackSettings.ThinkTimeMultiplier = 2;
Playback.PlaybackSettings.WaitForReadyLevel = WaitForReadyLevel.AllThreads;
Playback.PlaybackSettings.WaitForReadyLevel = WaitForReadyLevel.UIThreadOnly;
Playback.PlaybackSettings.WaitForReadyLevel = WaitForReadyLevel.Disabled;
Playback.PlaybackSettings.WaitForReadyTimeout = 2000;
Playback.PlaybackError -= Playback_PlaybackError;
Playback.PlaybackError += Playback_PlaybackError;
Playback.PlaybackSettings.DelayBetweenActions = 300;
}

最佳答案

您可以使用将在每次测试后执行的[TestCleanup] 方法。代码可能基于以下内容。

[TestCleanup()]
public void MyTestCleanup()
{
switch (TestContext.CurrentTestOutcome)
{
case UnitTestOutcome.Passed:
// Success.
break;

case UnitTestOutcome.Aborted:
case UnitTestOutcome.Error:
case UnitTestOutcome.Failed:
case UnitTestOutcome.Inconclusive:
case UnitTestOutcome.InProgress:
case UnitTestOutcome.Timeout:
case UnitTestOutcome.Unknown:
// Oh dear.
break;

default:
// Should never be called.
break;
}
}

一个更简单的例程可能只使用一个 if 语句:

    if (TestContext.CurrentTestOutcome != UnitTestOutcome.Passed )
{
// Oh dear.
}

关于c# - 编码 ui 测试失败后的操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27035190/

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