Я новичок в 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 внутри объявления класса, но это не приносит никакой пользы, и это не то, как это делает любое другое руководство по модульному тестированию, которое я видел. Почему мои модульные тесты не могут найти атрибут "приложение"?