【问题标题】:How to test if function raises Flask abort properly?如何测试函数是否正确引发 Flask 中止?
【发布时间】:2019-10-31 10:41:04
【问题描述】:

我正在尝试为我的烧瓶应用程序创建单元测试,它应该正确地断言异常。

我在我想要测试的内容上附加了简化的代码示例。下面的测试应该会成功。

def my_function():
    abort(400,"error")

import unittest

from werkzeug import exceptions

class Tests(unittest.TestCase):

    def test_event_link(self):
        self.assertRaises(exceptions.BadRequest,my_function)

unittest.main(argv=[''], verbosity=2, exit=False)

【问题讨论】:

    标签: python unit-testing flask


    【解决方案1】:

    我将简单地修补 Flask abort 函数并确保使用正确的值调用它,这是更可取的,因为它只测试您的代码而不是 Flasks abort 函数的行为,该函数可能会随着未来版本的 Flask 和打破你的测试。

    请参阅下面基于您的代码的示例,其中还包括测试异常的示例(如果您愿意这样做)。

    # code.py
    
    from flask import abort
    
    
    def my_function():
        abort(400, "error")
    
    # test.py
    
    import unittest
    from unittest.mock import patch
    from werkzeug import exceptions
    
    import code  # Your code file code.py
    
    
    class Tests(unittest.TestCase):
    
        @patch('code.abort')
        def test_one(self, mock_abort):
            code.my_function()
            mock_abort.assert_called_once_with(400, 'error')
    
        def test_two(self):
            with self.assertRaises(exceptions.BadRequest):
                code.my_function()
    
        def test_three(self):
            with self.assertRaisesRegexp(exceptions.BadRequest, '400 Bad Request: error'):
                code.my_function()
    
    
    unittest.main(argv=[''], verbosity=2, exit=False)
    

    【讨论】:

      猜你喜欢
      • 2018-01-16
      • 1970-01-01
      • 2010-09-12
      • 2021-06-25
      • 2023-02-21
      • 2015-11-02
      • 2020-02-03
      相关资源
      最近更新 更多