我想这样检查多个断言,并且在第一行代码引发断言错误之后。有人可以帮助我如何抓住这个主张。我知道可以通过try-except来实现,但是还有其他方法可以通过单元测试来实现。还请告诉我,此功能与多个AssertTrue,AssertFalse方法不同的原因是什么?
curl_setopt($ch, CURLOPT_HEADER, true);
任何帮助都将受到赞赏。
致谢
答案 0 :(得分:1)
您可以尝试的一种方法是assertRaises
并从assertLessEqual
块中调用with
方法:
import unittest
class Test1(unittest.TestCase):
def test_between(self):
with self.assertRaises(AssertionError) as e:
self.assertLessEqual(999, 998, "Not less")
with self.assertRaises(AssertionError) as e:
self.assertLessEqual(999, 500, "Not less")
if __name__ == '__main__':
unittest.main()
您应该发现assertTrue
或assertFalse
的行为与assertLessEqual
的行为相同,其描述如下:
就像
self.assertTrue(a <= b)
,但带有更好的默认消息。
您应该发现,许多单元测试方法都是assertTrue
或assertFalse
调用的简单包装。
当然,解决问题的一种简单方法是在您的a
呼叫中重新排列b
和assertLessEqual
或用户assertGreaterEqual
。
如果要运行大量类似的测试,则也可以查看subTest
。这使您可以为多个变量运行相同的测试代码:
import unittest
class Test1(unittest.TestCase):
def test_between(self):
for i in range(10):
with self.subTest(i=i):
self.assertLessEqual(i, 5)
if __name__ == '__main__':
unittest.main()
以上测试导致4个失败,其中一个为例:
FAIL: test_between (__main__.Test1) (i=9)
----------------------------------------------------------------------
Traceback (most recent call last):
File "scratchpad.py", line 7, in test_between
self.assertLessEqual(i, 5)
AssertionError: 9 not less than or equal to 5