webtest 라이브러리를 사용하여 몇 가지 테스트 케이스를 작성하려고하는데 문제는 내 사이트에 사용자가 로그인해야하는 액세스 제어 권한이 있다는 것입니다. 양식 게시가 성공적으로 수행 된 것으로 보이지만 그 결과에는 쿠키가 없으며 로그인 후에 cookiejar는 비어 있습니다.양식 제출에서 쿠키 가져 오기 및 웹 테스트와 함께 사용하기
는테스트 설정 :
는class TestMyViewSuccessCondition(unittest.TestCase):
def setUp(self):
self.config = testing.setUp()
from myapp import main
settings = {'sqlalchemy.url': postgresqlURL}
app = main({}, **settings)
from webtest import TestApp
self.testapp = TestApp(app, cookiejar=CookieJar())
테스트 : 양식 제출 후
page = self.testapp.get('/login', status=200)
self.assertIn('Please login', page)
form = page.forms['loginForm']
form['username'] = 'user'
form['password'] = 'userpw'
result = form.submit(status=200)
# self.testapp.cookies is empty dictionary at this point
# it fails here, login page is shown again
page = self.testapp.get('/home', status=200)
이 결과는 200 OK 및 로그인 페이지의 HTML 콘텐츠를 반환하지만 리디렉션은 발생하지 않습니다이다 문제? 또는 의도 한대로 작동합니까? 모든 액세스 제어 이전에 다른 양식 제출은 정상적으로 작동했습니다. 쿠키는 사용자가 링크를 클릭하거나 페이지를 다시로드 할 때마다 변경됩니다. 세션 쿠키를 사용하고 있습니다. 쿠키에 안전하지 않은 플래그를 설정하려고했습니다.
과 내 로그인보기의 마지막 반환 :
if 'form.submitted' in request.POST:
# do stuff
return HTTPFound(location=request.route_url('home'))
나는 일반 유닛 테스트를 사용하는 것입니다하지만보기 리디렉션 할 할 때 유닛 테스트 모듈은 너트를 푼다 때문에, 누군가가 WebTest에 라이브러리를 제안했다.