「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > Pytest を使用してタスクを自動化する: 例を含む実践的なガイド

Pytest を使用してタスクを自動化する: 例を含む実践的なガイド

2024 年 11 月 2 日に公開
ブラウズ:839

Automate your tasks Using Pytest: A practical guide with examples

自動化は、最新のソフトウェア開発とテストの重要な部分です。時間を節約し、手動エラーを減らし、プロセス間の一貫性を確保します。 Pytest フレームワークは、Python のタスク、特にテストを自動化するための最も人気があり強力なツールの 1 つです。軽量で使いやすく、自動化プロセスを簡素化する多数のプラグインと組み込み機能を提供します。

この記事では、Pytest フレームワークを使用してタスクを自動化する最良の方法を検討します。 3 つの実践的な例を見て、Pytest がさまざまな種類のタスクを効果的に自動化する方法を示します。

Pytest を使用する理由
例に入る前に、Pytest がタスク自動化に最適な理由について説明しましょう:

シンプルさ: Pytest の構文はシンプルで簡潔なので、テスト ケースの作成と読み取りが簡単です。
拡張性: 幅広いプラグインとフックを使用して、Pytest を拡張してさまざまなテストのニーズをサポートできます。
フィクスチャ: Pytest は、テストの前提条件や状態を設定し、再利用性を高めるための強力な機能であるフィクスチャを提供します。
統合: Pytest は CI/CD プラットフォームを含む他のツールとうまく統合し、エンドツーエンドの自動化を可能にします。

例 1: Pytest を使用した API テストの自動化
API は多くのアプリケーションのバックボーンであり、その信頼性を確保することが重要です。 Pytest とリクエスト ライブラリを使用すると、API テストを簡単に自動化できます。

ステップ 1: 必要なライブラリをインストールする
まず、Pytest とリクエスト ライブラリがインストールされていることを確認します:

pip install pytest リクエスト
ステップ 2: テスト スクリプトを作成する
テスト用の偽のオンライン REST API である JSONPlaceholder のようなパブリック API への単純な GET リクエストを自動化してみましょう。

`インポートリクエスト
pytestをインポート

ベース URL を定義する

BASE_URL = "https://jsonplaceholder.typicode.com"

@pytest.fixture
def api_client():
# このフィクスチャは、API リクエストを行うためのセッション オブジェクトを提供します
セッション = リクエスト.セッション()
イールドセッション
session.close()

def test_get_posts(api_client):
# GET リクエストを送信して投稿を取得します
応答 = api_client.get(f"{BASE_URL}/posts")
# アサーション
アサートresponse.status_code == 200
assert len(response.json()) > 0, "投稿が見つかりませんでした"`

説明:
フィクスチャ (api_client): このフィクスチャは、HTTP リクエストを行うための再利用可能なセッションをセットアップし、毎回新しいセッションを作成する必要をなくします。
テスト関数 (test_get_posts): この関数は GET リクエストを /posts エンドポイントに送信し、次のことを検証します。
ステータス コードは 200 で、成功を示します。
応答には少なくとも 1 つの投稿が含まれています。
ステップ 3: テストを実行する
テストを実行するには、次のコマンドを実行します:

バッシュ
コードをコピー
pytest -v test_api.py
これが機能する理由
テストは簡潔で再利用可能で、Pytest のフィクスチャを利用してセットアップと破棄を処理します。
Pytest の出力には、どのテストが成功したか失敗したかが表示されるため、API の信頼性を長期にわたって簡単に追跡できます。

例 2: Pytest と Selenium を使用した Web UI テストの自動化
Web UI テストは、アプリケーションのフロントエンドが期待どおりに動作することを確認します。 Pytest を Selenium と組み合わせて、これらのタスクを効率的に自動化できます。

ステップ 1: 必要なライブラリをインストールする
Pytest、Selenium、WebDriver Manager をインストールします:

pip インストール pytest Selenium webdriver-manager
ステップ 2: テスト スクリプトを作成する
Google の検索機能を検証する簡単な Web UI テストを自動化する方法は次のとおりです:

`pytest をインポート
Selenium インポート Webdriver から
selenium.webdriver.common.by から import By
selenium.webdriver.common.keys からインポート キー
webdriver_manager.chrome から ChromeDriverManager をインポート

@pytest.fixture
def ブラウザ():
# Chrome WebDriver をセットアップする
driver = webdriver.Chrome(ChromeDriverManager().install())
イールドドライバー
driver.quit()

def test_google_search(ブラウザ):
# Google に移動
browser.get("https://www.google.com")`{% enddraw %}

# Find the search box and enter a query
search_box = browser.find_element(By.NAME, "q")
search_box.send_keys("Pytest Automation")
search_box.send_keys(Keys.RETURN)

# Assert that results are shown
results = browser.find_elements(By.CSS_SELECTOR, "div.g")
assert len(results) > 0, "No search results found"

説明:
フィクスチャ (ブラウザ): このフィクスチャは、webdriver-manager を使用して Chrome WebDriver インスタンスを設定し、各テスト後に適切に閉じられるようにします。
テスト関数 (test_google_search): この関数:
Google のホームページを開きます。
「Pytest Automation」を検索します。
検索によって少なくとも 1 つの結果が返されることをアサートします。
ステップ 3: テストを実行する

でテストを実行します。

{% raw %}pytest -v test_ui.py
これが機能する理由
Pytest のフィクスチャはブラウザ インスタンスを管理し、テストのセットアップと分解をクリーンかつ効率的に行います。
Selenium を使用すると、スクリプトは実際のユーザーのように Web ページと対話し、UI が期待どおりに機能することを保証します。
例 3: Pytest と Pandas を使用したデータ検証の自動化
データ検証は、データ エンジニアリング、分析、ETL プロセスにおいて非常に重要です。 Pytest は、pandas ライブラリを使用してデータ検証タスクを自動化できます。

ステップ 1: 必要なライブラリをインストールする
Pytest と Pandas がインストールされていることを確認します:

pip pytest パンダをインストール
ステップ 2: テスト スクリプトを作成する
データセットが特定の条件 (null 値がない、データ型が正しいなど) を満たしていることを検証するタスクを自動化してみましょう。

`pytest をインポート
パンダを pd としてインポート

@pytest.fixture
def サンプルデータ():
# サンプルデータフレームを作成
データ = {
"名前": ["アリス"、"ボブ"、"チャーリー"、"デビッド"]、
「年齢」: [25、30、35、40]、
"電子メール": ["[email protected]"、"[email protected]"、なし、"[email protected]"]
}
df = pd.DataFrame(データ)
df

を返します

def test_data_not_null(サンプルデータ):
# DataFrame
に null 値があるかどうかを確認します assertsample_data.isnull().sum().sum() == 0, "データには null 値が含まれています"

def test_age_column_type(サンプルデータ):
# 'age' 列が整数型であることを確認します
assertsample_data['age'].dtype == 'int64', "年齢列は整数型ではありません"`
説明:
フィクスチャ (sample_data): このフィクスチャはサンプル データフレームをセットアップし、複数のテストで再利用できるデータセットをシミュレートします。
テスト関数 (test_data_not_null): このテストは、DataFrame に null 値があるかどうかをチェックし、見つかった場合は失敗します。
テスト関数 (test_age_column_type): このテストは、age 列が整数型であることを検証し、データの一貫性を保証します。
ステップ 3: テストを実行する

でテストを実行します。

pytest -v test_data.py
これが機能する理由
Pytest の柔軟性により、データ中心のテストが可能になり、データセットが期待される基準を確実に満たすことができます。
このフィクスチャを使用すると、コードを複製することなく、テスト データのセットアップと変更が簡単になります。
Pytest を使用してタスクを自動化するためのベスト プラクティス
セットアップとティアダウンにフィクスチャを使用する: フィクスチャはセットアップとティアダウンを効率的に管理するのに役立ち、テストをモジュール化して再利用可能にします。
プラグインの活用: Pytest には、自動化の取り組みを強化するためのさまざまなプラグイン (HTML レポート用の pytest-html、並列実行用の pytest-xdist など) があります。
テストのパラメーター化: @pytest.mark.parametrize を使用して複数のデータまたは入力セットをテストし、コードの重複を減らします。
CI/CD パイプラインとの統合: Pytest テストを Jenkins や GitHub Actions などの CI/CD ツールと統合して、継続的なテストを行います。

結論
Pytest は、API や Web UI のテストからデータ検証まで、さまざまなタスクを自動化する強力なツールです。そのシンプルさは、柔軟性と広範なプラグインのサポートと組み合わされており、開発者と QA エンジニアの両方にとって優れた選択肢となっています。フィクスチャ、パラメータ化、CI/CD パイプラインとの統合などの Pytest の機能を活用することで、堅牢で保守可能、スケーラブルな自動化フレームワークを構築できます。

ワークフローの自動化やテストプロセスの強化を検討している場合、Pytest は優れた出発点です。テストを楽しんでください!

リリースステートメント この記事は次の場所に転載されています: https://dev.to/mahmad321/automate-your-tasks-using-pytest-a-practical-guide-with-examples-5g1l?1 侵害がある場合は、study_golang@163 までご連絡ください。 .comを削除してください
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3