单元测试Flask应用程序类

2024-09-29 20:32:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我对Python还比较陌生,所以如果这是一些基本的问题,我会提前道歉。在

我有类似于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.

应用测试:

^{pr2}$

当我通过

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

我得到以下错误:

param2).app.test_client() AttributeError: MyApplication instance has no attribute 'app'

我尝试过将应用程序移到类声明中,但这样做没有任何好处,而且我见过的其他单元测试指南也不是这样做的。为什么我的单元测试找不到“app”属性?在


Tags: testselfapp应用程序flaskapplicationdefwith
1条回答
网友
1楼 · 发布于 2024-09-29 20:32:19

您的单元测试找不到“app”属性,因为MyApplication没有。在定义MyApplication的模块中有一个“app”属性。但那是两个不同的地方。在

或许可以尝试以下方法:

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

或者,您似乎还有一个“getApplication”方法,您实际上并没有使用它,但我想您是在为某些事情使用它。也许你真的想在你的测试中。。。在

^{pr2}$

相关问题 更多 >

    热门问题