如何为python unittest编写多个assertLessEqual方法

时间:2018-07-24 11:55:14

标签: python python-3.x python-unittest

我想这样检查多个断言,并且在第一行代码引发断言错误之后。有人可以帮助我如何抓住这个主张。我知道可以通过try-except来实现,但是还有其他方法可以通过单元测试来实现。还请告诉我,此功能与多个AssertTrue,AssertFalse方法不同的原因是什么?

curl_setopt($ch, CURLOPT_HEADER, true);

任何帮助都将受到赞赏。

致谢

1 个答案:

答案 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()

您应该发现assertTrueassertFalse的行为与assertLessEqual的行为相同,其描述如下:

  

就像self.assertTrue(a <= b),但带有更好的默认消息。

您应该发现,许多单元测试方法都是assertTrueassertFalse调用的简单包装。

当然,解决问题的一种简单方法是在您的a呼叫中重新排列bassertLessEqual或用户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