2
WSGI 인터페이스를 사용하여 nose 및 webtest으로 json 또는 html 결과로 cherrypy 응용 프로그램을 널리 테스트하는 방법은 무엇입니까?Webtest 및/또는 nose를 사용하여 cherrypy WSGI 응용 프로그램을 테스트 하시겠습니까?
임의의 실시 예가 이해 될 것이다.
WSGI 인터페이스를 사용하여 nose 및 webtest으로 json 또는 html 결과로 cherrypy 응용 프로그램을 널리 테스트하는 방법은 무엇입니까?Webtest 및/또는 nose를 사용하여 cherrypy WSGI 응용 프로그램을 테스트 하시겠습니까?
임의의 실시 예가 이해 될 것이다.
이 예는 도움이 될 수
from webtest import TestApp
from nose.tools import eq_
class TestAuthentication(object):
"""
Tests for the default authentication setup.
If your application changes how the authentication layer is configured
those tests should be updated accordingly
"""
application_under_test = 'main'
def setUp(self):
"""Method called by nose before running each test"""
# Loading the application:
conf_dir = config.here
wsgiapp = loadapp('config:test.ini#%s' % self.application_under_test,
relative_to=conf_dir)
self.app = TestApp(wsgiapp)
# Setting it up:
test_file = path.join(conf_dir, 'test.ini')
cmd = SetupCommand('setup-app')
cmd.run([test_file])
def tearDown(self):
"""Method called by nose after running each test"""
# Cleaning up the database:
model.DBSession.remove()
teardown_db()
def test_forced_login(self):
"""Anonymous users are forced to login
Test that anonymous users are automatically redirected to the login
form when authorization is denied. Next, upon successful login they
should be redirected to the initially requested page.
"""
# Requesting a protected area
resp = self.app.get('/secc/', status=302)
assert resp.location.startswith('http://localhost/login')
# Getting the login form:
resp = resp.follow(status=200)
print resp.forms
form = resp.forms
# Submitting the login form:
form['login'] = u'manager'
form['password'] = 'managepass'
post_login = form.submit(status=302)
# Being redirected to the initially requested page:
assert post_login.location.startswith('http://localhost/post_login')
initial_page = post_login.follow(status=302)
assert 'authtkt' in initial_page.request.cookies, \
"Session cookie wasn't defined: %s" % initial_page.request.cookies
assert initial_page.location.startswith('http://localhost/secc/'), \
initial_page.location