DjangoとSeleniumの統合





みなさんこんにちは。



アプリケーションのテストがソフトウェア開発の重要な段階であることは秘密ではありません。Webアプリケーションを開発している場合は、Webインターフェイスをテストするだけで済みます。 幸いなことに、この目的のためにSeleniumのようなツールが存在します。 有名企業のSKB KonturとYandexは、アプリケーションとサービスの機能テスト用ツールとしてすでに選択しています(Yandexは最近のYaCでこれについて話しました)。



ここまでがポイントです。

私が取り組んでいるプロジェクトの1 つでは 、最初のブランチからSeleniumを使用しました。 しかし、時間が止まることはありません。 ウェブドライバー技術に基づいたSelenium 2.0は、より機能的で便利で、ブラウザ内のイベントを正しく模倣しています( 利点についてはこちら )。



アプリケーション内の古いSeleniumサポートコードを更新しないように(複数回行う必要がある場合はどうなりますか?)、また、他の開発者にとって有用なことをしようとするために、すぐにSeleniumと別のライブラリに統合することにしました。



次に、私たちがしたこととこのライブラリの使用方法について説明します。



設置



ライブラリはhttps://github.com/dragoon/django-seleniumから取得するか、pip経由でインストールできます。

pip install django-selenium
      
      





特徴



まず第一に、このライブラリを使用すると、 djangoテストサブシステムと統合できます。 ライブラリでTestRunnerを使用するように設定で単純に指定できます。

 TEST_RUNNER = 'django_selenium.selenium_runner.SeleniumTestRunner'
      
      



または、それを継承して独自のクラスを作成します。

舞台裏では、 SeleniumTestRunnerは次のことを行います。

次に、Seleniumテストの作成を開始するには、通常のtests.pyと同様に、アプリケーションにseltests.pyファイルを作成する必要があります。 次に、 django_selenium.testcases.SeleniumTestCaseからテストクラスを継承し、Seleniumコマンドを使用してブラウザーと対話するテストを作成します。



標準ドライバー拡張


標準操作のパフォーマンスを促進するために、ブラウザーと対話する拡張ドライバークラスdjango_selenium.testcases.MyDriverが記述されています。 URLのオープン、サイトへのログイン(djangoの標準形式)、cssセレクターを使用した要素の検索、要素の検索とクリック、ページ上のテキストの存在の確認、アラートテキストの受信などの操作が含まれます。 詳細については、 今のところMyDriverクラスのソースコードを参照してください。



テスト実行コマンドの置き換え


最後に、標準のdjangoテスト実行コマンドをセレンテストをサポートするコマンドに置き換えるには、次のようにアプリケーションのどこかでコマンドクラスを継承する必要があります。

 from django_selenium.management.commands import test_selenium class Command(test_selenium.Command): def handle(self, *test_labels, **options): super(Command, self).handle(*test_labels, **options)
      
      



このコマンドは、2つの追加オプションをサポートしています。 標準コマンドの場合と同様に、特定のアプリケーションに対してSeleniumテストを実行することも、アプリケーションから特定のテストのみを実行することもできます。



テストアプリケーション



上記を統合するために、1つのセレンテストを含む小さなdjangoアプリケーションを準備しました。

 #  selenium-server.jar wget http://selenium.googlecode.com/files/selenium-server-standalone-2.7.0.jar git clone git://github.com/dragoon/django-selenium-testapp.git cd django-selenium-testapp #      SELENIUM_PATH vi settings.py #   ./manage.py test --selenium-only ... ---------------------------------------------------------------------- Ran 1 test in 13.254s OK
      
      





すべてが正常に実行された場合、次の図を確認する必要があります。





いつものように、私はさらなる修正のためのコメントと提案、このライブラリがどれほど有用であるかについての意見を聞いてうれしく思います。そしてもちろん、他のギタババーからの修正に関する助けをうれしく思います。



ご清聴ありがとうございました。



All Articles