在我正在进行的某些单元测试中,当变量位于两个边界条件之间时,我需要通过测试。
像 -
def myTest(self):
myInt = 5
self.assertBetween(myInt,3,8)
将通过测试。或者,如果myInt在3到8的范围之外撒谎,它将失败。
我已经查看了python文档中的断言方法列表,但无法确定哪一个会给我这种功能。
感谢。
答案 0 :(得分:21)
您可以将assertTrue()用于此目的:
self.assertTrue(myInt >= 3 and myInt <= 8)
或者,使用Python的比较链式成语:
self.assertTrue(3 <= myInt <= 8)
答案 1 :(得分:17)
self.assertTrue(3 <= myInt <= 8)
导致测试输出如下:
AssertionError: False is not True
这使得开发人员无法确定myInt
的实际问题是什么。最好是啰嗦:
self.assertGreaterEqual(myInt, 3)
self.assertLessEqual(myInt, 8)
因为那样你得到有用的测试输出:
AssertionError: 21 not less than or equal to 8
如果你发现自己经常使用这个习语,那么你可以编写自己的断言方法:
def assertBetween(self, value, min, max):
"""Fail if value is not between min and max (inclusive)."""
self.assertGreaterEqual(value, min)
self.assertLessEqual(value, max)
请注意,如果要测试的值是整数,那么您可以将assertIn
与range
一起使用:
self.assertIn(myInt, range(3, 9))
导致测试输出如下:
AssertionError: 21 not found in range(3, 9)
答案 2 :(得分:7)
为了补充答案,你可以在self.assertTrue中添加一个msg并使其更具可读性
所以
self.assertTrue(3 <= myInt <= 8, msg="%i is not between 3 and 8" % myInt)
会产生正确的输出,您不需要assertGreaterEqual
和assertLessEqual
。
答案 3 :(得分:1)
有assertAlmostEqual主要用例是比较浮点数。但是使用delta
参数,您可以将其用于整数:
self.assertAlmostEqual(9, 5, delta=3)
这会为您提供有意义的错误消息:
AssertionError: 9 != 5 within 3 delta