2013-05-29 5 views
0

POST 메서드 만 구현 한 python FLASK 뷰가 있습니다. 외부 템플릿이이 뷰에 데이터를 POST 할 것이므로 GET이 필요하지 않습니다. 이제이 뷰에 대한 단위 테스트를 작성하려고합니다. 여기서 초기 POST 요청을 조롱하고 뷰 구현이 올바르게 작동한다고 주장합니다. 내보기 구현에 액세스하는 외부 템플릿의모의 HTTP POST 요청

예 :

<HTML> 
    <HEAD> 
    <TITLE> New Document </TITLE> 
    <META NAME="Author" CONTENT="Richard Ward"> 
    <META NAME="Keywords" CONTENT=""> 
    <META NAME="Description" CONTENT="Test Page"> 
    </HEAD> 

    <BODY> 
     <FORM METHOD="POST" ACTION="www.myView.com/testview"> 
     <INPUT TYPE="hidden" NAME="employeeId" value="304253498022"> 
     <INPUT TYPE="hidden" NAME="employeeName" value="testName"> 
     <INPUT TYPE="submit" name="submit" value="Show Information"> 
     </FORM> 
    </BODY> 
</HTML> 

내보기 클래스

내가 직접 내보기의 게시물을 호출하고 몸에 모의 양식 데이터를 전달하려는
class TestView(MethodView): 
    app = None 
    def post(self): 
     """ 
     Implementation of the post request for this view 
     """ 
     employeeId= request.form.get('employeeId', None) 
     employeeName = request.form.get('employeeName', None) 

     # some data processing code 

     return render_template("summary.html") 

    @classmethod 
    def registerSelf(cls, app): 
     """ 
     Registers itself as a view with the passed Flask application 
     """ 
     TestView.app = app 
     app.flaskApp.add_url_rule('/testview', view_func=TestView.as_view('testview')) 

+0

당신이 셀레늄을 사용해야하거나 테스트 클라이언트에 내장 된 플라스크를 사용할 수 있습니까? http://flask.pocoo.org/docs/testing/, http://stackoverflow.com/a/15838404/594589 – dm03514

+0

테스트 클라이언트에 내장 된 플라스크를 사용하면 POST 요청을 모의하기가 쉬워 질까요? – Priyam

+0

예, 테스트 클라이언트가 수행 할 작업입니다. – dm03514

답변

0

방금 ​​2 시간 동안 방치되어 있었고 테스트에서 데이터 페이로드로 사전을 전달할 수 있습니다. 그러면 i에 액세스 할 수 있습니다.

request.form.get를 통해 코드에서 t 예제 테스트 코드

from <the module you want to test> import app 
    app.testing = True 
    self.app = app.test_client() 
    self.app.post(<endpoint name, for example /index>, data={ 
     'employeeId': '1', 
     'employeeName': 'Ruth'})