だから私は webtest ライブラリでいくつかのテストケースを実行しようとしています.問題は、私のサイトにユーザーがログインする必要があるアクセス制御があることです. フォームの投稿は成功したようですが、結果にはCookieがなく(少なくとも見つけることができました)、ログイン後に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 コンテンツは、フォームの送信後にリダイレクトされませんが、問題はありますか? それとも意図したとおりに機能していますか?アクセス制御の前は、他のフォームの送信は問題なく機能していました。Cookie は、ユーザーがリンクをクリックするか、ページをリロードするたびに変更されます。セッションクッキーを使用しています。Cookie に安全でないフラグを設定しようとしました。
そして私のログインビューの最後のリターン:
if 'form.submitted' in request.POST:
# do stuff
return HTTPFound(location=request.route_url('home'))
私は通常の単体テストを使用しますが、ビューがリダイレクトしようとすると単体テストモジュールがナットを失うため、誰かが webtest ライブラリを提案しました。