簡體   English   中英

如何測試 function 是否引發 Flask 正確中止?

[英]How to test if function raises Flask abort properly?

我正在嘗試為我的 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)

I would simply patch the Flask abort function and ensure it is called with the correct value, this is preferable as it only tests your code not the behaviour of Flasks abort function which could change with future versions of Flask and break your tests.

請根據您的代碼查看下面的示例,其中還包括測試異常的示例(如果您願意這樣做)。

# 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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM