2011-07-07 8 views
2

私は、app.yamlファイルのログイン設定を使用するGoogleアプリケーションエンジンのアプリをテストしています。たとえば、app.yamlのログイン設定でユニットをテストする

- url: /profile 
    script: main.py 
    login: required 

テストベッド、鼻、鼻介、およびウェブテストを使用していますが、どちらが問題かはわかりません。

私の問題は、テスト中にapp.yamlからのログイン設定が無視されることです。だから私がログインしているユーザと電話がない場合

response = self.app.get("/profile") 

私は、ログインページにリダイレクトされるのではなく、要求されたページを取得します。

app.yamlからログイン設定をテストする方法はありますか?

答えて

2

ユニットテストを使用していません。あなたのテストではハンドラを直接呼び出していますが、これにはdev_appserverが含まれていません。これはこれらの制限を適用するコンポーネントです。これらの制限をテストするには、dev_appserverを呼び出してHTTP経由で呼び出すエンドツーエンドのテストが必要です。

+0

"dev_appserverを呼び出すエンドツーエンドのテストを行う方法を説明するリソースを指摘してください。それをHTTP経由で呼び出しますか? –

+0

@ジェフ私は残念なことに、それがどこにでも書かれているとは思わない。あなたは、シェルからdev_appserverを呼び出すか、SDKの内部を調べてプログラムで呼び出す方法を理解する必要があります。これが価値があるかどうかを検討したいかもしれません。 app.yamlに頼るのではなく、app.yamlの内容を検証するテストを書く代わりに、コードにチェックを入れる方が簡単です。 dev_appserverではなく独自のアプリケーションをテストしているので、後者はおそらく良いでしょう。 –

+0

フィードバックありがとうございます。このためには大きな努力をする価値はありませんので、私はあなたのよりシンプルなソリューションの1つを検討します。 –

1

これはほぼ2年後ですが、I had a similar problem and came upon a solution that's been developed latelyです。

devappserver2には"regression test framework"があります。これはdefault development appserver as of 1.7.6です。実際にapp.yamlのセキュリティ設定を使用するサーバーをセットアップし、この種の統合テストを行います

+0

非常に興味深い!これはwebtestに取って代わりますか、それともwebtestで使用しますか? –

+0

フレームワークがあなたがテストすることができるdevサーバーインスタンスを起動するのに役立ちますが、GAEの完全な統合テストのためにwebtestを置き換えるとは思いません。それはあなたのapp.yamlセキュリティチェックを処理しますが、ステータス、ヘッダー、およびコンテンツ情報を与える基本的なurl_fetch以外のものは、今のところ提供していません。大規模なコンテンツチェックを行う場合は、WebTest.TestAppオブジェクトを返すメソッドを使ってBaseTestCaseを拡張します。 – MichaelJCox

関連する問題