Модульное тестирование класса приложения Flask

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

У меня ситуация похожая на Как настроить приложение Flask с помощью SQLAlchemy для тестирования? Большая разница для меня в том, что в отличие от большинства других примеров Flask, которые я вижу в Интернете, большую часть кода я есть для моего приложения в классе. По какой-то причине это приводит к тому, что мое модульное тестирование работает неправильно. Ниже приведена базовая настройка моего приложения и тестов:

Приложение:

from Flask import Flask

app = Flask(__name__)

class MyApplication():
    def __init__(self, param1, param2):
        app.add_url("/path/", "method1", self.method1, methods=["POST"])
        # Initialize the app

    def getApplication(self):
       options = # application configuration options
       middleware = ApplicationMiddleware(app, options)
       return middleware

    def method1(self, methodParam):
        # Does useful stuff that should be tested
    # More methods, etc.

Тесты приложений:

import unittest
from apppackage import MyApplication

class ApplicationTestCase(unittest.TestCase):

    def setUp(self):
        self.tearDown()
        param1 = # Param values
        param2 = # Param values
        # Other local setup 
        self.app = MyApplication(param1, param2).app.test_client()

    def tearDown(self):
       # Clean up tests

    def test_method1(self):
        methodParam = # Param value
        response = self.app.post("path/methodParam")
        assert(reponse.status_code == 200)

Когда я запускаю свои тесты через

Nosetests --with-coverage --cover-package apppackage ./test/test_application.py

Я получаю следующую ошибку:

param2).app.test_client() AttributeError: Экземпляр MyApplication имеет нет атрибута 'app'

Я пробовал перемещать app внутри объявления класса, но это не приносит никакой пользы, и это не то, как это делает любое другое руководство по модульному тестированию, которое я видел. Почему мои модульные тесты не могут найти атрибут "приложение"?

6
задан Community 23 May 2017 в 10:34
поделиться