ページを選択

Python バインディング

Python 用の API バインディングは、Python から TestRail の API にアクセスするために使用できます。API バインディングは、API リクエストを認証するための基本的な機能を提供するほか、シームレスな JSON エンコード/デコードを提供し、一般的な読み取りおよび書き込みリクエストをサポートします。API バインディングの使用例については、以下を参照してください。

このバインディングのソースコードは TestRail API bindings GitHub repository にあります。:

セットアップとインストール

上記の場所から ZIP をダウンロードし、選択したディレクトリに展開してください。Python のバインディングは 単一のファイル (“testrail.py”) で “python” サブディレクトリにあります。このファイルを “import” が見つけられるよう、アプリケーションまたはプロジェクトのディレクトリにコピーしてください。次のように API バインディングを使用します。

from testrail import *
 
client = APIClient('http:///testrail/')
client.user = '..'
client.password = '..'
..

Web ブラウザーで TestRail にアクセス場合に使用する TestRail アドレスを API クライアントにも指定します (例:https://<your-name>.testrail.com/ または http://<server>/testrail/ など)

API レート制限

すべてのユーザーに最適なパフォーマンスを保証するため、TestRail Cloud では、API はレート制限されており、リクエストが絞られる場合があることに注意してください。また、TestRail は 429 Too Many Requests レスポンスを返す場合があり、ユーザーはこれに対処する必要があります。

TestRail Cloud でレート制限を避けるには、一括 API エンドポイントを使用したり (add_results_for case ではなく add_results_for_cases を使用するなど)、API 呼び出しの間に遅延時間を設けることを検討してください。

注意:TestRail Server には API レート制限は組み込まれていません。

例:GET リクエスト

GET リクエストは読み取り専用の API メソッドによって TestRail からのデータの読み取りまたは照会に使用します。たとえば、次のコードは、 get_case API メソッドを使用してテスト ケースのプロパティを取得する方法を示しています。

client = APIClient('http:///testrail/')
client.user = '..'
client.password = '..'
case = client.send_get('get_case/1')
pprint(case)

API バインディングはすべての GET リクエストに対応する send_get という名前の単一のメソッドを提供します。このメソッドは、任意のパラメーター (この場合はテスト ケースの ID) を含む TestRail API メソッドの名前 (この例では get_case) を受け取ります。戻り値は Python の dict および string で、UTF-8 エンコーディングを使用します。

エラー (接続の問題、認証の失敗、API 引数の不足など) が発生した場合は TestRailAPIException 型の例外がスローされることがあります。例外はコードで対処する必要があります。

例:POST リクエスト

POST リクエストは書き込みベースの API メソッドによって TestRail にデータを追加したり、TestRail のデータを更新するのに使用します。たとえば、次のコードは、 add_result_for_case API メソッドを使用してテスト結果を追加する方法を示しています。

..
result = client.send_post(
  'add_result_for_case/1/1',
  { 'status_id': 1, 'comment': 'This test worked fine!' }
)
pprint(result)
..

send_post メソッドには send_get と同じプロパティがありますが、GET ではなく POST を使用して API リクエストを送信する点が異なります。send_get と同様に、 send_post はパラメーター (この例ではテスト ランの ID とケースの ID) を含めた TestRail API メソッドの名前 (この例では add_result_for_case) を期待します。戻り値は Python の dict です。POST 引数は 2番目のパラメーターとして、Python の dict (この例ではステータス ID とコメント) で追加します。文字列に期待されるエンコーディングは UTF-8 です。

エラー (接続の問題、認証の失敗、API 引数の不足など) が発生した場合は TestRailAPIException 型の例外がスローされることがあります。例外はコードで対処する必要があります。

例:添付ファイル リクエスト

TestRail に添付ファイルを追加したり、TestRailから添付ファイルを取得したりする場合は、更新された API バインディングを使用してリクエストを行うことができます。

TestRailから添付ファイルを取得するときは、ダウンロードパスとファイル名をリクエストに含める必要があります。同じ名前のファイルが既に存在する場合は上書きされることがあります。get_attachments_for_test などのAPIメソッドを使用して、既存のファイル名を取得できます。成功した場合、レスポンスにはダウンロード用のファイルパスが含まれます。

result = client.send_get('get_attachment/1', 'C:\\attachment.jpg')

添付ファイルを追加する場合、添付ファイルのパスとファイル名をリクエストに含める必要があります。

result = client.send_post('add_attachment_to_result/1', 'C:\\screenshot.jpg')