12

私はdjangoでのテストについて読んでいます。推奨されたのは、機能テストにdjango-webtestを使用することでした。Pythonを使用してセレンの機能テストを行う方法を教えているまともな記事をここで見つけました。しかし、人々はまた、IanBickingのWebTestの拡張機能djagno-webtestをdjangoでフォームをテストするために使用することを推奨しています。Webtestを使用したテストと、セレンを使用したテストは、djangoフォームのコンテキストでどのように異なりますか?

したがって、機能テストの観点から:

django-webtestとセレンはどのように並んでいますか?

両方を用意する必要がありますか、それともどちらかが必要ですか?

4

2 に答える 2

24

主な違いは、WebTestがWSGIにフックしているのに対し、seleniumは実際のブラウザーを実行することです。これにより、次の違いが生じます。

  • JSコードを実行するものがないため、WebTestでJSコードをテストすることはできません。
  • WebTestはWSGIに接続するため、はるかに高速です。これは、メモリフットプリントが小さいことも意味します。
  • WebTestは実際にサーバーをポートで実行する必要がないため、パラライズするのが少し簡単です。
  • WebTestは、特定のブラウザーバージョンのバグ(咳..インターネットエクスプローラー..咳..)など、実際のブラウザーで発生するさまざまな問題をチェックしません。

結論: WebTestでテストできないものにSeleniumを使用する必要がある場合を除き、WebTestを使用することをお勧めします。

于 2012-09-23T12:18:18.833 に答える
11

Seleniumについて知っておくべき重要なことは、Seleniumが主にサーバーに依存しないテストフレームワークとして構築されていることです。期待どおりに動作する限り、フロントエンドを作成するためにどのフレームワークまたはサーバー側の実装を使用するかは問題ではありません。また、Seleniumで手動でテストを作成することはできます(可能であれば、おそらくそうする必要があります)、多くのテストは、モーションを実行する誰かのマクロを記録し、自動的にコードに変換します。

一方、django-webtestは、特にDjangoWebサイトで機能するように構築されています。これは実際にはWebTestのDjango固有の拡張機能であり、Djangoのみではなく、WSGIのみ(したがってPythonのみ)です。そのため、サーバー上での動作をより高いレベルで認識して、アプリケーションと対話できます。これにより、テストの実行が高速になり、より詳細で詳細なテストを簡単に作成できるようになります。また、Seleniumとは異なり、テストを記録されたマクロとして自動的に書き込むことはできません。

それ以外の場合、2つのツールは一般的に同じ目的を持ち、同じ種類のものをテストすることを目的としています。そうは言っても、両方を使用するのではなく、どちらかを選択することをお勧めします。

于 2012-09-17T14:48:38.967 に答える