在Visual Studio中使用Selenium。使用NUnit对我的测试用例进行排序。
我正在编写一个测试用例,用一个if语句比较两个serialnumbers,如下所示:
[Test]
public void CompareVariables()
{
if (string.Equals(serialNumberInfo, serialNumberReport))
Console.WriteLine($"{serialNumberInfo} and {serialNumberReport} are a match! Proceed!");
else
Console.WriteLine($"{serialNumberInfo} and {serialNumberReport} don't match! Cancel test!");
//method for stopping test missing!
如果序列号不匹配,我希望能够中止测试序列的其余部分。
是否有一个“结束/停止测试”的方法或类似的东西,我可以把在else
节?
3条答案
按热度按时间dgtucam11#
我觉得你有几个选择。
1)简单地抛出一个异常(并使测试失败)
抛出异常会导致单元测试失败。有很多不同类型的异常,但基本类型是
Exception
。您可以检查可用的不同类型的异常here。在可能的情况下,尝试选择最接近错误的异常(例如,使用ArgumentException
或其衍生物)。你的测试看起来像这样:
2)使用Assert(并使测试失败)
单元测试通常被认为是Assert某些期望的事情发生了。如果那件事没有发生,那么应该抛出一个异常(通常由一些Assert框架为您处理)。
所以你可以翻转测试来做到这一点:
这是用Shouldly完成的,但有无数的Assert框架,所以选择你最喜欢的。(mstest有一个内置的,但我觉得它可读性不太好,但这是个人喜好)。
注意,只有当你想明确地确保它应该发生的时候才使用Assert。也就是说,这需要为真才能通过我的测试,而不是如果这发生了,然后中止。这很难解释,所以我希望这是有意义的?
当事情出错时的异常,当事情应该正确时的Assert。
3)离开测试(并通过测试)
如果测试退出时没有抛出异常(手动或通过Assert框架),那么测试被认为是通过测试。因此,如果你想把它当作通过,你可以简单地从测试中返回。
}
这将标记测试为通过,但意味着测试中的其余操作不会运行。我会尽量不这样做-除非你真的明白为什么你想要这样做,因为你可以在不知道为什么他们通过的情况下开始通过测试(即不Assert任何东西)
希望这能帮上忙
bogh5gae2#
如果你想尽早结束测试而不使其失败,只需使用return。
我这样做是合理的,因为某些条件可能需要额外的Assert,而其他条件可能不需要。抛出异常将使测试失败。这不会使测试失败。
编辑:我刚注意到另一个回复者在他们的回答结束时提到了这一点。所以别理我:)
vjrehmav3#
这是我的解决方案。我使用Assert.Fail()和一条消息。这停止了测试执行并记录了一条消息。
我使用C#和Selenium。