我正在为大致具有以下组织的 Flask 应用程序编写单元测试:
/myapplication
runner.py
/myapplication
__init__.py
/special
__init__.py
views.py
models.py
/static
/templates
index.html
/special
index_special.html
/tests
__init__.py
/special
__init__.py
test_special.py
特别是,我想测试该special
模块是否按预期工作。
我已经定义了以下内容:
在
special/views.py
:mod = Blueprint('special', __name__, template_folder="templates") @mod.route('/standard') def info(): return render_template('special/index_special.html')
在
myapplication/__init__.py
:app = Flask(__name__) def register_blueprints(app): from special.views import mod as special_blueprint app.register_blueprint(special_blueprint, url_prefix='/special') register_blueprints(app)
在
myapplication/tests/test_special.py
class TestSpecial: @classmethod def create_app(cls): app = Flask(__name__) register_blueprints(app) return app @classmethod def setup_class(cls): cls.app = cls.create_app() cls.client = cls.app.test_client() def test_connect(self): r = self.client.get('/standard') assert r.status_code == 200
虽然应用程序本身工作正常,但test_connect
单元测试失败并出现TemplateNotFound: special/index_special.html
异常。
我怎么能告诉测试在哪里可以找到相应的模板?使用Flask 测试绕过模板的渲染并不是一个真正的选择......