मैं पाइथन के लिए बिल्कुल नया हूं, इसलिए अग्रिम में माफी माँगती है अगर यह कुछ बुनियादी के लिए बहुत अधिक है।यूनिट परीक्षण फ्लास्क एप्लिकेशन क्लास
मैं How do you set up a Flask application with SQLAlchemy for testing? के लिए इसी तरह मेरे लिए बड़ा अंतर यह है कि अधिकांश अन्य बोतल उदाहरण के विपरीत मैं इंटरनेट पर देखते हैं स्थिति है, कोड मैं अपने आवेदन के लिए है के सबसे एक कक्षा में है। किसी कारण से, यह मेरे यूनिट परीक्षण को सही ढंग से काम नहीं करने का कारण बन रहा है।
आवेदन::
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
मैं जीई निम्न त्रुटि टी:
param2).app.test_client() AttributeError: MyApplication instance has no attribute 'app'
मैं कोशिश की कक्षा घोषणा के अंदर एप्लिकेशन चलती है, लेकिन है कि किसी भी अच्छा काम नहीं करता है, और नहीं कैसे हर दूसरे इकाई परीक्षण गाइड मैंने देखा है यह करता है। मेरा यूनिट परीक्षण "ऐप" विशेषता क्यों नहीं ढूंढ सकता?
जैसा कि मार्क ने अपने उत्तर में उल्लेख किया है कि कक्षा में कोई ऐप विशेषता नहीं है। एक विशेषता किसी वर्ग से संबंधित नहीं है जब तक कि हम इसे self.attribute_name = value का उपयोग करके संलग्न न करें या कक्षा के बाहर विधियों के बाहर इसे परिभाषित न करें। – codecool