断言两种可能的结果之一

时间:2012-08-03 16:53:25

标签: unit-testing

我正在尝试为具有两个可能的正确结果的测试用例编写UnitTest。返回哪个结果取决于实际实现,但与要求无关;要么是可以接受的。

两个断言不起作用 - 一个总是失败。

目前,我将两个结果添加到列表中,并断言计算结果在该列表中:

Assert.IsTrue(list.Contains(result));

这样可行,但是如果测试失败,它不会给出预期/实际输出(这通常非常有用)。

是否有一种更优雅的方式来断言两种可能的预期值之一?

(我目前正在使用MSTest,但我很乐意听到其他框架可以提供的内容,或者是否有一般建议)

3 个答案:

答案 0 :(得分:2)

断言失败时,NUnitMSTest中的Assert.IsTrue都有重载来设置显示的消息。对于您的情况,您可以像这样编辑断言

Assert.IsTrue(list.Contains(result), 
    "The list did not contain the value " + result);

此消息可以像您希望的那样明确

Assert.IsTrue(list.Contains(result), 
    "The list was expected to contain the value " + result
    + Environment.NewLine + "but had the values " + 
    methodToPrintContentsOfList(list));

这应该有助于解决您所遇到的模糊断言消息问题。

答案 1 :(得分:0)

使用fest assert和:

assertThat(calculatedResult).isIn(1, 4, 15, 37);

答案 2 :(得分:0)

assertIn(a, b)

测试a中的a 3.1中的新内容

https://docs.python.org/3/library/unittest.html