Python - test that succeeds when exception is not raised

前端 未结 3 1490
时光取名叫无心
时光取名叫无心 2021-02-19 04:20

I know about unittest Python module.

I know about assertRaises() method of TestCase class.

I would like to write a test th

相关标签:
3条回答
  • 2021-02-19 04:37

    The test runner will catch all exceptions you didn't assert would be raised. Thus:

    doStuff()
    self.assert_(True)
    

    This should work fine. You can leave out the self.assert_ call, since it doesn't really do anything. I like to put it there to document that I didn't forget an assertion.

    0 讨论(0)
  • 2021-02-19 04:44

    I use this pattern for the kind of assertion you've asked:

    with self.assertRaises(Exception):
        try:
            doStuff()
        except:
            pass
        else:
            raise Exception
    

    It will fail exactly when exception is raised by doStuff().

    0 讨论(0)
  • 2021-02-19 04:53
    def runTest(self):
        try:
            doStuff()
        except:
            self.fail("Encountered an unexpected exception.")
    

    UPDATE: As liw.fi mentions, the default result is a success, so the example above is something of an antipattern. You should probably only use it if you want to do something special before failing. You should also catch the most specific exceptions possible.

    0 讨论(0)
提交回复
热议问题