
みなさんこんにちは。
アプリケーションのテストがソフトウェア開発の重要な段階であることは秘密ではありません。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-server.jarサーバーを開始します
- テストフィクスチャを使用してテストサーバーインスタンスを起動します
次に、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 -Seleniumテストを含むすべてのテストを実行します
- --selenium-only -Seleniumテストのみを実行します
標準コマンドの場合と同様に、特定のアプリケーションに対してSeleniumテストを実行することも、アプリケーションから特定のテストのみを実行することもできます。
テストアプリケーション
上記を統合するために、1つのセレンテストを含む小さなdjangoアプリケーションを準備しました。
すべてが正常に実行された場合、次の図を確認する必要があります。

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