如何测试函数是否正确引发了Flask中止?

时间:2019-10-31 10:41:04

标签: python unit-testing flask

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

我在要测试的内容上附加了简化的代码示例。以下测试应成功完成。

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)

1 个答案:

答案 0 :(得分:0)

我只需要修补Flasks 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)