Как проверить, правильно ли работает функция отмены Flask? - PullRequest
0 голосов
/ 31 октября 2019

Я пытаюсь создать юнит-тесты для моего приложения фляги, которые должны правильно утверждать исключения.

Я прилагаю упрощенный пример кода к тому, что я хочу протестировать. Приведенный ниже тест должен завершиться успешно.

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 голосов
/ 12 ноября 2019

Я бы просто исправил функцию 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)
...