2012-10-15 5 views
5

WebTest에서 내가 겪고있는 문제를 이해하려고 지난 이틀간 웹을 검색했습니다. 그러나 나는 기쁨이 없었으며 여기있는 누군가가 도울 수 있는지 궁금해하고있었습니다.nosetests 및 파일 업로드 관련 문제

개발중인 웹 응용 프로그램에서 테스트를 실행하는 데 코를 사용했지만 파일 업로드 필드가있는 양식에 문제가있는 것 같습니다. 양식 및 유효성 검사는 정상적으로 실행될 때 서버에서 작동하며 쉘에서 테스트 코드를 실행하면 작동합니다. 그러나 코에서 테스트 코드를 실행할 때마다 제출 된 정보를 수락하지 못합니다. 여기

양식의 예입니다

<form method="POST" enctype="multipart/form-data" action="...."> 
    <input type="text" name="first_name" id="first_name"> 
    <input type="text" name="last_name" id="last_name"> 
    <input type="file" name="thumbnail" id="thumbnail"> 
    <input type="submit" value="Create" name="submit" id="submit"> 
</form> 

내 WebTest에 코드는 다음과 같습니다

response = self.app.get(url(controller=self.controller, action='create')) 
form = response.form              

log.debug(form.submit_fields())           

form.set('first_name', 'test1-1')           
form.set('last_name', 'test1-1')            
form.set('thumbnail', '')             

log.debug(form.submit_fields())           
response = form.submit() 

내가 얻을 응답 나는이 그 축소판이 제출 된 값에서 누락 된 것입니다 실행 양식 유효성 검사기에서 필드가 필요하지 않다고 생각한 경우에도 마찬가지입니다. 나는 코의 코드 출력을 비교 쉘을 통해 그것을 실행할 때 나는 submit_fields의 출력이 다른

쉘 출력 것을 발견 할 때 : 당신으로

[(u'first_name', ''), (u'last_name', ''), (u'thumbnail', <File name="thumbnail" id="thumbnail">)] #First log call 
[(u'first_name', 'test1-1'), (u'last_name', 'test1-1'),(u'thumbnail', <File name="thumbnail" id="thumbnail">)] #Second log call 

:

[('first_name', ''),('last_name', '')] #First log call 
[('first_name', 'test1-1'),('last_name', 'test1-1'), ('thumbnail', '')] #Second log call 

코 출력 셸에서 썸네일 튜플이없는 차이가 있음을 알 수 있지만 문제없이 통과하는 빈 문자열로 설정합니다. 그러나 코에는 이미 튜플이 있고 값을 재설정하지 않습니다. 아무도 이것으로 나를 도울 수 있습니까? form.submit 방식을 사용할 때 WebTest에서 여러 부분 양식을 사용하는 데 문제가 있습니까?

미리 도움을 주셔서 감사합니다.

도서관 정보 : 철탑-1.0.1 WebTest에-1.4.0 WebOb-1.2.3 코 1.2.1

+0

form.set ('축소판', '', 인덱스 = 0)을 사용해 보셨습니까? –

+0

귀하의 의견을 주셔서 감사합니다 @ 파이,하지만, 내 이해에서 인덱스 값은 양식에 같은 이름을 가진 여러 필드가 필요한 경우에만 필요합니다. 나는 그것을 단지 안전한쪽에 있기 위해 시험했다. 그러나 그것은 다른 무엇이라도하지 않았다. 여기 내가 놓치고있는 뭔가가 분명히 있습니다. –

+1

form.set ('축소판 그림', 없음)을 시도해 보셨습니까? – alecxe

답변

1

당신이 log.debug(form.submit_fields())에 log.debug을 제거 시도?

노즈는 때때로 출력의 내부 리다이렉션을 수행하기 때문에 로깅과 함께 이상하게 상호 작용하는 것으로 알려져 있습니다.

+0

예, 실제로 원래 버전에는 로그인이 없었습니다. 따라서 이것을 제거하면 현재 결과에 아무런 영향을 미치지 않습니다. 시간을내어 주셔서 감사합니다. –