Unittest Jinja2 및 Webapp2 : 템플릿을 찾을 수 없음

그렉

GAE 프로젝트에서 Webapp2와 함께 Jinja2를 사용합니다.

RequestHandler설명 된대로 기본 이 있습니다 webapp2_extras.jinja2.

import webapp2

from webapp2_extras import jinja2


def jinja2_factory(app):
    """Set configuration environment for Jinja."""
    config = {my config...}
    j = jinja2.Jinja2(app, config=config)
    return j


class BaseHandler(webapp2.RequestHandler):

    @webapp2.cached_property
    def jinja2(self):
        # Returns a Jinja2 renderer cached in the app registry.
        return jinja2.get_jinja2(factory=jinja2_factory, app=self.app)

    def render_response(self, _template, **context):
        # Renders a template and writes the result to the response.
        rv = self.jinja2.render_template(_template, **context)
        self.response.write(rv)

뷰 핸들러는 다음과 같습니다.

class MyHandler(BaseHandler):
    def get(self):
        context = {'message': 'Hello, world!'}
        self.render_response('my_template.html', **context)

내 템플릿은 기본 위치 ( templates)에 있습니다.

앱이 개발 서버에서 잘 작동하고 템플릿이 올바르게 렌더링됩니다.

하지만 유닛 테스트하려고 할 때 MyHandler

import unittest
import webapp2
import webstest

class MyHandlerTest(unittest.TestCase):

    def setUp(self):
        application = webapp2.WSGIApplication([('/', MyHandler)])
        self.testapp = webtest.TestApp(application)

    def test_response(self):
        response = application.get_response('/')
        ...

application.get_response('/my-view')예외 발생 : TemplateNotFound: my_template.html.

내가 놓친 것이 있습니까? jinja2 환경이나 템플릿 로더 구성처럼?

그렉

문제 원인 : Jinja2 기본 로더는 상대 ./templates/디렉토리 에서 파일을 검색합니다 . 개발 서버에서 GAE 애플리케이션을 실행할 때이 경로는 애플리케이션의 루트에 상대적입니다. 그러나 unittest를 실행할 때이 경로는 unittest 파일에 상대적입니다.

솔루션 : 이상적인 솔루션은 아니지만 여기에 내 문제를 해결하기 위해 한 트릭이 있습니다.

앱 구성에 설정된 동적 템플릿 경로를 추가하도록 jinja2 팩토리를 업데이트했습니다.

def jinja2_factory(app):
    """Set configuration environment for Jinja."""
    config = {'template_path': app.config.get('templates_path', 'templates'),}
    j = jinja2.Jinja2(app, config=config)
    return j

그리고 내 unittests의 setUp에서 템플릿에 대한 절대 경로를 설정했습니다.

class MyHandlerTest(unittest.TestCase):

    def setUp(self):
        # Set template path for loader
        start = os.path.dirname(__file__)
        rel_path = os.path.join(start, '../../templates') # Path to my template
        abs_path = os.path.realpath(rel_path)
        application.config.update({'templates_path': abs_path})

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

Zend 프레임 워크 2 찾을 수 없음 템플릿

분류에서Dev

jinja2에서 아름다운 수프 및 렌더링 템플릿을 사용하여 HTML 구문 분석

분류에서Dev

django 1.9 템플릿에서 jinja2의 기본 표현을 사용할 수 없습니다.

분류에서Dev

GoogleAppEngineLauncher webapp2 가져 오기를 찾을 수없는 후 gcloud 설치

분류에서Dev

Spring Boot 및 Thymeleaf : HTML 템플릿을 찾을 수 없음

분류에서Dev

jinja2 템플릿에서 URL을 변수로 사용합니까?

분류에서Dev

Django, 템플릿을 찾을 수 없음

분류에서Dev

nunjucks : 템플릿을 찾을 수 없음

분류에서Dev

백본 및 requireJSe 오류 : 템플릿을로드 할 때 404 찾을 수 없음

분류에서Dev

Apache Cordova 업데이트 2 용 Visual Studio 2015 도구 템플릿을 찾을 수 없음

분류에서Dev

jinja2를 사용하여 템플릿에서 실제 출력으로 "\ n"이 포함 된 새 줄을 가져올 수 없습니다.

분류에서Dev

Django 템플릿 엔진을 jinja2로 변환하는 동안 오류가 발생하여 'with'를 사용할 수 없습니다.

분류에서Dev

Jinja2 템플릿에서 변수에 대한 열을 어떻게 지정할 수 있습니까?

분류에서Dev

json 파일을 jinja2 템플릿 파이썬으로

분류에서Dev

QTextEdit의 여러 줄을 Jinja2 템플릿에 삽입

분류에서Dev

jinja2 템플릿을 사용할 때 ansible의 정의되지 않은 변수 오류

분류에서Dev

ansible의 jinja2 템플릿에서 쉘 명령을 실행할 수 있습니까?

분류에서Dev

Jinja2 템플릿의 Ansible 변수 배열을 반복하여 중첩 사전 생성

분류에서Dev

Jinja2 템플릿에서 구성된 변수 이름을 호출 하시겠습니까?

분류에서Dev

Django 앱 템플릿 로더, 앱 템플릿을 찾을 수 없음

분류에서Dev

.ejs 템플릿의 href 및 src 속성을 찾을 수 없습니다.

분류에서Dev

Twig 및 Symfony 2.8.18로 업그레이드 한 후 템플릿 내에서 블록을 찾을 수 없음

분류에서Dev

cakephp 2에 템플릿을 추가 할 수 없습니다.

분류에서Dev

플러그인의 Grails g : render 템플릿-찾을 수 없음

분류에서Dev

Nornir : Python 함수를 Jinja2 템플릿에 전달

분류에서Dev

Ansible 변수로 Jinja2 템플릿 채우기?

분류에서Dev

Jinja2 템플릿 변수 업데이트

분류에서Dev

Leaf가 내 템플릿을 찾을 수 없음-Xcode 12 Vapor 4

분류에서Dev

템플릿을 찾을 수 없음, Webfaction에 Pyramid 배포

Related 관련 기사

  1. 1

    Zend 프레임 워크 2 찾을 수 없음 템플릿

  2. 2

    jinja2에서 아름다운 수프 및 렌더링 템플릿을 사용하여 HTML 구문 분석

  3. 3

    django 1.9 템플릿에서 jinja2의 기본 표현을 사용할 수 없습니다.

  4. 4

    GoogleAppEngineLauncher webapp2 가져 오기를 찾을 수없는 후 gcloud 설치

  5. 5

    Spring Boot 및 Thymeleaf : HTML 템플릿을 찾을 수 없음

  6. 6

    jinja2 템플릿에서 URL을 변수로 사용합니까?

  7. 7

    Django, 템플릿을 찾을 수 없음

  8. 8

    nunjucks : 템플릿을 찾을 수 없음

  9. 9

    백본 및 requireJSe 오류 : 템플릿을로드 할 때 404 찾을 수 없음

  10. 10

    Apache Cordova 업데이트 2 용 Visual Studio 2015 도구 템플릿을 찾을 수 없음

  11. 11

    jinja2를 사용하여 템플릿에서 실제 출력으로 "\ n"이 포함 된 새 줄을 가져올 수 없습니다.

  12. 12

    Django 템플릿 엔진을 jinja2로 변환하는 동안 오류가 발생하여 'with'를 사용할 수 없습니다.

  13. 13

    Jinja2 템플릿에서 변수에 대한 열을 어떻게 지정할 수 있습니까?

  14. 14

    json 파일을 jinja2 템플릿 파이썬으로

  15. 15

    QTextEdit의 여러 줄을 Jinja2 템플릿에 삽입

  16. 16

    jinja2 템플릿을 사용할 때 ansible의 정의되지 않은 변수 오류

  17. 17

    ansible의 jinja2 템플릿에서 쉘 명령을 실행할 수 있습니까?

  18. 18

    Jinja2 템플릿의 Ansible 변수 배열을 반복하여 중첩 사전 생성

  19. 19

    Jinja2 템플릿에서 구성된 변수 이름을 호출 하시겠습니까?

  20. 20

    Django 앱 템플릿 로더, 앱 템플릿을 찾을 수 없음

  21. 21

    .ejs 템플릿의 href 및 src 속성을 찾을 수 없습니다.

  22. 22

    Twig 및 Symfony 2.8.18로 업그레이드 한 후 템플릿 내에서 블록을 찾을 수 없음

  23. 23

    cakephp 2에 템플릿을 추가 할 수 없습니다.

  24. 24

    플러그인의 Grails g : render 템플릿-찾을 수 없음

  25. 25

    Nornir : Python 함수를 Jinja2 템플릿에 전달

  26. 26

    Ansible 변수로 Jinja2 템플릿 채우기?

  27. 27

    Jinja2 템플릿 변수 업데이트

  28. 28

    Leaf가 내 템플릿을 찾을 수 없음-Xcode 12 Vapor 4

  29. 29

    템플릿을 찾을 수 없음, Webfaction에 Pyramid 배포

뜨겁다태그

보관