Pytestの自動テストプロジェクトをセットアップする

Diogo Rede著

この記事は、「TestRailで実現する円滑なテスト自動化」と題したシリーズ記事の一部です。このシリーズでは、次の図のように、自動テストの結果をTestRailに集約する方法を詳しく説明します。

テストケースを自動化するフレームワークは数多くあります。それぞれに独自性があり、特定のタイプのテストに特化している場合もあるでしょう。TestRailにテスト結果をアップロードするには、JUnit形式のレポートを使用するため、このシリーズで作成するワークフローの唯一の要件は、フレームワークがJUnit形式のレポートを生成できることです。ここではサンプルとしてPytestを使用します。PytestはPythonのテストフレームワークであり、小規模で可読性の高いテストを簡単に作成できるほか、アプリケーションやライブラリの複雑な機能テストをサポートするようスケールアップも可能です。

この記事の最後には、図のステップ2および3が完成するはずです。ただし、Jenkinsではなくローカルマシン上でですが、最終的な目標を達成するための過程の1つとして、まずは簡単なやり方で始めます。

ローカル環境のセットアップ

簡単なPytestプロジェクトをインストールして実行するために必要なものはPythonだけです。ローカルマシンにPythonをインストールするには、OSに合った Python 3.10.xディストリビューションをダウンロードし、インストールウィザードの指示に従うことを推奨します。インストールが正常に終了したら、コマンドラインからpython --versionおよびpip --versionコマンドを実行します。すると、バージョン情報が表示されるはずです。

サンプルPytestプロジェクトのインストールと実行

Automation Frameworks Integration GitHub repositoryに簡単なサンプルプロジェクトがあるので、これをクローンまたはダウンロードできます。テストファイルはtestsフォルダーにあります。test_sum.py ファイルを開くと、数値を加算して期待される結果を検証する非常に簡単なテストがあるのがわかるでしょう。

import pytest

def test_sum_two_numbers():
    assert 1 + 1 == 2

def test_sum_two_decimals():
    assert 0.8 + 0.3 == 1.2

@pytest.mark.parametrize("test_input,expected", [("3+5", 8), ("2+4", 6)])
def test_sum_multiple_numbers(test_input, expected):
    assert eval(test_input) == expected

プロジェクトをインストールするには、任意のターミナルで次のコマンドを実行します。requirements.txtファイルを開くと、このプロジェクトの唯一の依存関係はPytestです。つまり、インストールされるのはPytestだけです。

$ pip install -r "requirements.txt"

最後に、ターミナルから次のコマンドを実行してテストを実行します。すると、すぐに下の画像のような実行結果が表示されるはずです。

$ pytest "./tests"

最終結果

ローカルマシン上で自動テストプロジェクトをセットアップし、実行したので、何度でも繰り返し実行したり、ニーズに合わせてカスタイマイズしたりできます。次の図は、ここまでで完成したワークフローを示しています。

自動テストをローカルマシンでだけ実行することには、いくつかのデメリットがあります。その1つは、テストが特定のシステム構成に依存する可能性があり、別のマシンでは実行を再現するのが難しい場合があることです。もう1つのデメリットは、結果を他のメンバーが参照できないことです。この2つのデメリットを避けるため、JenkinsなどのCIツールを使用して、一貫した方法で自動テストの実行をオーケストレーションし、テスト結果を公開するべきです。

Jenkinsで自動テストの実行を設定する方法については、この後公開されるステップ2「CIツールとしてJenkinsを使用して自動テストプロジェクトをオーケストレーションする」を参照してください。

(この記事は、開発元Gurock社の Blog 「Setting up a Pytest automated tests project」2022年9月24日の翻訳記事です。)

関連する製品

テスト管理ツール TestRail

テストケースの管理やテスト結果の記録、チームでの情報共有など、Excelを使ったテスト管理の業務に限界を感じていませんか?TestRailはシンプルで使いやすいUIを提供し、テストにかかるさまざまな管理コストの削減に貢献します。

■ TestRailの特長 ■

  • テストにさまざまな情報を関連づけて一元管理
  • Webブラウザー上でテストケースを簡単に入力や編集可能
  • テスト実施の準備と結果の共有が容易
  • 進捗や比較などのレポートを提供
  • 要件 / 課題管理ツールやテスト自動化ツールと連携

日本国内では、テスト管理にExcelを使っていたお客さまからの乗り換えが多く、Web上で完結するテスト管理を実現されています。

TestRail でテスト管理のお悩みを解決しませんか?

テストの生産性向上をTestRailでお試しください

クラウドおよびオンプレミス、デモサイトでTestRailがお試しいただけます。

  • TestRailクラウド(クラウドサービス)
    • クラウドサービス環境でTestRailをお試しいただけます。
  • TestRailサーバー(オンプレミス版)
    • お客様のマシンにTestRailをインストールしてお試しいただけます。
  • TestRailデモサイト
    • インストールなどの設定なしにTestRailにサンプルデータが登録された環境にて操作をお試しいただけます。

eBook 公開中

Paul Gerrard著 効果的なテスト管理12の秘密 (日本語)

テスト計画やテスト管理に役立つ12のトピックを解説します。

詳細はこちら