私はPythonの新機能です。基本的なものではあまり苦労します。Flaskアプリケーションクラスのユニットテスト
私は状況が似ているHow do you set up a Flask application with SQLAlchemy for testing?私の大きな違いは、私がインターネット上で見るほとんどの他のFlaskの例とは異なり、私のアプリケーションのために持っているほとんどのコードがクラスにあることです。何らかの理由で、これは私のユニットテストが正しく動作しない原因になります。以下は、私のアプリケーションやテストの基本的な設定です:
アプリケーション:
from Flask import Flask
app = Flask(__name__)
class MyApplication():
def __init__(self, param1, param2):
app.add_url("/path/<methodParam>", "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
次のエラーT:
param2).app.test_client() AttributeError: MyApplication instance has no attribute 'app'
私はクラス宣言内のアプリを移動しようとしたが、それは何か良いをしない、と私は見てきた他のすべてのユニットテストガイドはそれをしない方法ではありません。私の単体テストが "app"属性を見つけられないのはなぜですか?
マークは、彼の答えでは、クラス内のアプリケーション属性はありません。属性は、self.attribute_name = valueを使用してアタッチしない限り、クラスに属しません。 – codecool