2014-10-14 2 views
0

Pyramid-Ptah는 웹 프레임 워크가 빠르기 때문에 빨지 않습니다. 그것은 수입하는 모든 구식 도서관 중에서 최악의 것을 버리고 모델 뷰 컨트롤러를 RoR이나 장고처럼 우아하게 해결합니다.Django에서 오는 TDD 매니아를위한 Pyramid-Ptah

이제 homepage.pt에 최신 HTML이 포함되어 있다는 TDD를 시도해주세요. 우리는 homepage.pt에 "Rumble Monkey"를 추가하고 생성 된 일부 HTML에서 볼 수 있다고 주장합니다.

config.add_route('home', '/') 

그리고 '가정'것입니다 :

예를 들어, app.py는 단지이 줄을 발행 할 필요는 Home 페이지를 실행하려면? 그리고 그것을 테스트하는 방법?

여기 HomepageView입니다 :

@view_config(route_name='home', 
      renderer=player.layout('shelf_ptah:homepage.lt', 'content')) 
class HomepageView(object): 

    def __init__(self, request): 

     self.request = request 

    def __call__(self): 
     return {} 

경로 이름, 그래서 HomepageView 시험이 모두 home 있습니다.

다음으로 테스트 할 방법은 HomepageView입니까? 서버를 렌더링하는 것과 같은 방법으로 렌더링합니다. Ptah-에서 테스트중인 문자열로,

def test_index(self): 
    resp = self.client.get('/') 
    self.assertEqual(resp.status_code, 200) 

그래서, 어떻게 입력 URI을 렌더링하고 response.content를 얻을 :

장고에서, 우리는 Client() 모의 서버 개체를 사용하십시오 땅?

답변

1

기능 테스트를 위해 webtest을 사용하는 것이 피라미드 문서에 나와 있습니다.

http://docs.pylonsproject.org/docs/pyramid/en/latest/narr/testing.html#creating-functional-tests

워드 프로세서에서 예 :

def setUp(self): 
    from app import main 
    global_config = { 
     '__file__': '...blah/blah/blah/settings.ini', 
     'here': '..blah/blah/myapp'} 
    settings = { 
     'pyramid.includes': '\npyramid_debugtoolbar', 
     'sqlalchemy.url': 'sqlite:///db.sqlite', 
     'pyramid.debug_authorization': 'false', 
     'pyramid.default_locale_name': 'en', 
     'pyramid.reload_templates': 'true', 
     'pyramid.debug_notfound': 'false', 
     'pyramid.debug_templates': 'true', 
     'pyramid.debug_routematch': 'false', 
     'ptah.site_title': 'Rumble Monkey'} 
    zapp = main(global_config, **settings) 
    from webtest import TestApp 
    self.testapp = TestApp(zapp) 

나는 자연스럽게 모른다 :

import unittest 

class FunctionalTests(unittest.TestCase): 
    def setUp(self): 
     from myapp import main 
     app = main({}) 
     from webtest import TestApp 
     self.testapp = TestApp(app) 

    def test_root(self): 
     res = self.testapp.get('/', status=200) 
     self.assertTrue('Pyramid' in res.body) 

     assert 'Rumble Monkey' == res.lxml.xpath('head/title')[0].text 

는 I (영업 이익)이 팅겨와 함께 작업하는 것을 가지고 얼마나 많은 설정을 가져갈 수 있습니까 (또는 내가 왜 settings.ini 파일을 읽어야 만했는지 알 수 있습니다). pp). 그리고 자연스럽게 blah/blah/blahos.path.dirname(__file__) 마법사로 대체 할 것입니다.

+0

아, WSGI 웹 서버를 실제로 시작하지 않고 조롱합니다. Tx. 설치 후 답변을 확인하겠습니다. 또한 "기능적"테스트는 "뷰 테스트"또는 "통합 테스트"와 다른 것을 의미하지만 이는 일반적인 업계의 오해입니다. – Phlip

+0

악명 높은'> url = options.pop ('url') E KeyError : 'url'' 오류 – Phlip

+0

'pop' 오류가 응답으로 고정되었습니다. 그것에 2 개의 사전을 던지십시오. 테스트를위한 모든 올바른 스타일. – Phlip