testproject python sdk tutorial
TestProject Python SDKチュートリアル:既存のSeleniumおよびAppiumベースのテストを強化するこのチュートリアルは、TestProject PythonSDKの使用を開始するのに役立ちます。 SDKの最も強力な機能のインストール、構成、および使用方法を学びます。
SeleniumとAppiumは、デスクトップブラウザとモバイルベースのテストで最も人気のあるオープンソーステストフレームワークの1つです。
ザ・ TestProject Python SDK これらのツールに基づいて構築されており、TestProjectプラットフォームの機能を提供し、レポートプラットフォーム、自動ブラウザー検出、ドライバー構成などに関する美しいHTMLおよびPDFレポートを提供します。
そして最高のことは、TestProjectプラットフォームとSDKの使用が永久に完全に無料であることです。 SDKもオープンソースなので、プロジェクトに貢献したい場合は、そうすることができます。
学習内容:
TestProject Python SDKとは何ですか?
このチュートリアルでは、TestProject Python SDKの使用を開始する方法、既存のSeleniumおよびAppiumベースのテストでTestProjectプラットフォームを活用する方法、およびSDKの最も強力な機能のいくつかを使用する方法を説明します。
注意 :テストはPython以外の言語で書かれていますか?心配する必要はありません。TestProjectはJavaおよびC#用のSDKも提供しており、近い将来、さらに多くの言語が登場します。
インストールと構成
=> 無料のTestProjectサインアップについては、このページにアクセスしてくださいPythonSDKはで利用可能です PyPI 、Pythonパッケージインデックス。ここでは、Pythonが正常にインストールされていることを前提としています。必要なのは、SDKをインストールすることだけです。そのためには、次のことを行う必要があります。 次のコマンドを実行します。
pip install testproject-python-sdk
これにより、SDKと、SeleniumやPythonAppiumクライアントなどの必要な依存関係がインストールされます。
SDKの使用を開始する前に、さらに2つのことを行う必要があります。
#1)マシンにTestProjectエージェントをインストールして構成します。
TestProject Agentは、ブラウザードライバーのインストールと構成、およびSDKによって生成されたレポートのTestProjectプラットフォームへの送信を担当します。
でアカウントを作成した後 TestProject プラットフォーム(これも無料です)では、エージェントをダウンロードできます。
ダウンロード後、インストールして起動する必要があります。デフォルトでは、エージェントはで実行されます http:// localhost:8585。 別のポートで、またはまったく別のマシンでエージェントを実行する場合でも、問題はありません。この場合、あなたがする必要があるのは、環境変数に正しいエージェントアドレスを指定することだけです TP_AGENT_URL SDKが実行されている場所を通知します。
#2)開発者トークンを取得して構成します。
エージェントと通信するには、開発者トークンも必要です。エージェントをインストールした後、次の画像に示すように、TestProjectプラットフォームサイトから開発トークンを取得できます。
環境変数で開発者トークンを指定します TP_DEV_TOKEN SDKにそれを認識させるため。または、新しいドライバーセッションを作成するときに、引数として指定することもできます。これについては後で説明します。
SDKをダウンロードし、エージェントをインストール、構成、および起動し、開発者トークンを取得して構成したら、準備は完了です。
最初のTestProjectを利用したSeleniumテストの作成
TestProjectデモWebアプリに移動するSeleniumベースのテストがあると仮定します。ログイン資格情報を提供し、ログインアクションが正常に完了したことを示すために迎えられたことを確認します。また、Pytestユニットテストフレームワークを使用してこのテストを実行し、アサーションを実行するとします。
このようなテストは次のようになります。
from selenium import webdriver def test_login_to_testproject_example_app(): driver = webdriver.Chrome() driver.get('https://example.testproject.io/web/') driver.find_element_by_id('name').send_keys('John Smith') driver.find_element_by_id('password').send_keys('12345') driver.find_element_by_id('login').click() assert driver.find_element_by_id('greetings').is_displayed() is True driver.quit()
上記の例では、ブラウザとしてChromeを使用しています。 Chromeに加えて、SDKは次のデスクトップブラウザもサポートしています。
- Firefox
- 縁
- インターネットエクスプローラ
- サファリ
この例では、ページオブジェクトなど、Seleniumベースのテストで一般的な抽象化パターンを使用していませんが、これらを使用する場合は、まったく問題ありません。実際、これにより、テストフロー(アクション、テストデータ)とWebページの実装の詳細(要素ロケーター)が明確に分離されるため、これをお勧めします。
上記のすべてのインストールおよび構成手順が完了したら、このテストをTestProjectを利用したテストに変換するために必要なのは、以下で説明するようにimportステートメントを置き換えることだけです。
from selenium import webdriver
これでリレース:
from src.testproject.sdk.drivers import webdriver
それでおしまい!ここでテストを実行すると、SDKはTestProjectエージェントからドライバーインスタンスを要求し、それを使用してテストを実行します。また、レポートの指示をTestProjectプラットフォームに送信し、HTMLレポートの作成に使用されます。それらを見てみましょう!
TestProjectプラットフォームでのレポートの検査
TestProjectに移動し、メニューから(レポート)オプションを選択すると、実行したばかりのテスト用に新しいレポートが作成されたことがわかります。下の画像を参照してください。
最高の無料通話サービス
ご覧のとおり、SDKはプロジェクト名を自動的に推測しています( software_testing_help )、ジョブ名( 例 )、およびテスト名( test_login_to_testproject_example_app )そしてレポートを作成するときにこれらを使用しました。これは、PytestとUnittestの両方、および専用の単体テストフレームワークを使用して実行されないテストでサポートされています。
次のセクションでは、カスタマイズされたプロジェクト、ジョブ、テスト名、およびその他の便利なレポートオプションを指定する方法を説明します。
テスト中に実行されたすべてのドライバーコマンドは、結果とともにレポートに自動的に追加されます。 TestProjectは、すぐに使用できる概要とダッシュボードも生成します。
TestProjectを使用したカスタマイズオプションのレポート
TestProjectは、すぐに使用できる豊富で使いやすいレポートを生成しますが、情報要件に合わせてレポートをカスタマイズする方法はいくつかあります。
前の例で見たように、TestProjectは、最も人気のあるPythonユニットテストフレームワークのプロジェクト、ジョブ、およびテスト名を自動的に推測できます。ただし、レポートでカスタム名を使用する場合は、2つの異なる方法で使用することもできます。
#1)デコレータの使用
TestProject SDKは、 @報告する テストメソッドを装飾するために使用でき、次の目的で使用できるデコレータ 以下に示すように、カスタムプロジェクト、ジョブ、およびテストの名前を指定します。
from src.testproject.sdk.drivers import webdriver from src.testproject.decorator import report @report(project='Software Testing Help', job='SDK Examples', test='Login Test') def test_login_to_testproject_example_app(): driver = webdriver.Chrome() # the rest of the test method remains unchanged
この装飾されたテストメソッドを実行してレポートを調べると、自動的に推測された名前ではなく、指定された名前が生成されたレポートで使用されていることがわかります。
#2)ドライバーコンストラクターでプロジェクト名とジョブ名を指定し、テストを手動で報告します。
プロジェクト名とジョブ名は、ドライバーオブジェクトのコンストラクターで指定することによってオーバーライドすることもできます。 これは次のように実行できます。
from src.testproject.sdk.drivers import webdriver def test_login_to_testproject_example_app(): driver = webdriver.Chrome(projectname='Software Testing Help', jobname='SDK Examples') # the rest of the test method remains unchanged
自動的に推測されたテスト名を上書きする場合は、次のように、テストの最後に手動でテストを報告できます。
from src.testproject.sdk.drivers import webdriver def test_login_to_testproject_example_app(): driver = webdriver.Chrome(projectname='Software Testing Help', jobname='SDK Examples') driver.get('https://example.testproject.io/web/') driver.find_element_by_id('name').send_keys('John Smith') driver.find_element_by_id('password').send_keys('12345') driver.find_element_by_id('login').click() assert driver.find_element_by_id('greetings').is_displayed() is True driver.report().test(name='Login Test', passed=True) driver.quit()
手動レポートオプションを使用する場合は、テストの自動レポートを無効にして(デフォルトで有効になっています)、テストが2回レポートされないようにして、レポートとダッシュボードが破損するようにする必要があります。
次のコマンドを使用して、自動レポートを無効にできます。
from src.testproject.sdk.drivers import webdriver def test_login_to_testproject_example_app(): driver = webdriver.Chrome() driver.report().disable_auto_test_reports(disabled=True) # the rest of the test method remains as above
これにより、レポートは上記の最後のスクリーンショットとまったく同じになります。
#3)ドライバーコマンドのレポートを無効にする
テスト中に実行された個々のドライバーコマンドをすべてレポートに含めたくない場合は、次のようにそれらの自動レポートを無効にすることができます。
from src.testproject.sdk.drivers import webdriver def test_login_to_testproject_example_app(): driver = webdriver.Chrome() driver.report().disable_command_reports(disabled=True) # the rest of the test method remains unchanged
同じメソッドを再度呼び出すことで、テストの後半でドライバーコマンドレポートを再度有効にすることもできますが、引数はdisabled = Falseです。
それでもテスト中にいくつかの中間ステップを報告したい場合は、それを行うこともできます。
from src.testproject.sdk.drivers import webdriver def test_login_to_testproject_example_app(): driver = webdriver.Chrome() driver.report().disable_command_reports(disabled=True) driver.report().step(description='An intermediate step', message='A custom message', passed=True, screenshot=True) # here goes the rest of the test method
ご覧のとおり、カスタムレポートの手順にスクリーンショットを追加することもできます。これらは、TestProjectプラットフォームのHTMLレポートに自動的に統合されます。
TestProject SDKには、レポートをさらにカスタマイズするためのオプションがさらに用意されています。 完全な概要については、TestProject Webサイト、GitHub、またはPyPIの公式ドキュメントを参照してください。
TestProjectを使用したAppiumベースのテストの実行
Seleniumベースのテストに加えて、TestProject SDKは、Appiumを使用してモバイルデバイスでテストを実行することもできます。エミュレーターでネイティブAndroidアプリに対して実行するこの例を考えてみましょう。
from appium import webdriver def test_native_android_app(): desired_capabilities = { 'appActivity': 'io.testproject.demo.MainActivity', 'appPackage': 'io.testproject.demo', 'udid': '', 'browserName': '', 'platformName': 'Android', } driver = webdriver.Remote(desired_capabilities=desired_capabilities) driver.find_element_by_id('name').send_keys('John Smith') driver.find_element_by_id('password').send_keys('12345') driver.find_element_by_id('login').click() assert driver.find_element_by_id('greetings').is_displayed() driver.quit()
ここでも、TestProjectプラットフォームの機能を使用するには、 変更するだけです
from appium import webdriver
に:
from src.testproject.sdk.drivers import webdriver
そして、私たちは行ってもいいです。 TestProjectエージェントはAppiumサーバーとしても機能するため、テストを実行しているマシンで自分で実行する必要はありません。
上記のすべてのレポート機能は、Appiumベースのテストでも利用できます。
SDKはモバイルテストの実行をサポートしています。
- AndroidおよびiOSの場合。
- エミュレーターと実際のデバイス。
- ネイティブアプリとモバイルブラウザ
これらすべての例は、GitHubのSDKコードリポジトリにあります。
結論
このチュートリアルで見たように、TestProject Python SDKは、ブラウザードライバーとAppiumサーバーを構成する手間を省くことで、既存のSeleniumベースおよびAppiumベースのテストを強化するのに役立ちます。 TestProjectプラットフォーム。
何よりも、TestProject PythonSDKは完全に無料です。
=>に進んでください TestProjectで試してみてください !
著者について:Bas Dijkstra
著者は、テストの自動化を通じてテストの取り組みを改善する方法を世界中の企業に教えています。彼はオランダに住む独立したトレーナー、コンサルタント、開発者です。暇なときは、自転車に乗ったり、走ったり、本を読んだりするのが好きです。
推奨読書
- TestProjectテスト自動化ツールハンズオンレビューチュートリアル
- Pythonの導入とインストールプロセス
- AndroidアプリのAppiumテストを作成する
- 初心者のためのPythonチュートリアル(実践的な無料のPythonトレーニング)
- Appium Studio forEclipseを使用してAppiumテストを並行して実行する
- Eclipse用のepochsStudioを使用したエポックテストの作成
- Appiumテストの大規模な実行を並行して実行する方法
- IDEに統合して、Appiumテストを実行します