TestRail : TestRail API 사용하여 Python과 연동하기

Soyean·2023년 9월 9일

Python

목록 보기
2/2

이번 글에서는 Testrail API의 사용을 위해 TestRail에서 제공해주는 API MANUAL 를 정리했습니다.
Python 용 바인딩 파일을 통해 Testrail의 API를 파이썬에서 사용할 수 있습니다.
Testrail API 에서 제공하는 기본 기능들을 통해 테스트 결과를 입력하거나 테스트를 생성할 수 있습니다.

TestRail API 코드 설치

TestRailAPI를 사용하기 위해, testrail.py를 임포트해야 합니다.
Binding-Python 의 상단 TestRail API binding for Python (ZIP) 압축을 풀어서 testrail.py 파일을 실행하고자 하는 파이썬 디렉토리 하단에 추가해줍니다.
해당 파일은 testrail-api Github 에서도 확인 가능합니다.

설정

연동시킬 Testrail의 계정 정보를 입력해줍니다.

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

ID variables

주로 사용되는 ID는 아래 3개 입니다. 이 외에도 attachment_id / milestone_id / plan_id 의 정보는 여기 서 확인 가능합니다.

  • Project ID – project_id
    프로젝트 ID는 프로젝트 별 고유 번호로, 대시보드의 리스트 중 프로젝트를 선택했을 때 url의 맨 마지막에 노출되는 숫자로 확인할 수 있습니다.
    해당 ID는 프로젝트 진입 시 P{N}으로 노출됩니다. ( 아래 사진에서의 P5 )

  • Test Run ID – run_id
    테스트 실행 시 생성되는 TEST RUN은 TEST RUN & RESULTS 탭 진입> 테스트 런 상세 진입한 경우 R{N}으로 노출되는 것으로 확인할 수 있습니다
    ( 아래 사진에서의 R128 )

  • Case ID – case_id
    각 테스트 케이스는 테이스마다 고유 번호를 가지고 있습니다.
    해당 번호는 TEST CASES 탭 진입> 테스트 케이스 상세 진입한 경우 C{N}으로 노출되는 것으로 확인할 수 있습니다. ( 아래 사진에서의 C1165 )

API 사용하기

하단은 API reference 의 예시를 추후 사용에 용이하도록 Python 용으로 수정한 예시입니다.

프로젝트에 test run 생성

result = client.send_post(
    'add_run'/{project_id},
    {
      "suite_id": 1,
      "name": "This is a new test run",
      "assignedto_id": 5,
      "refs": "SAN-1, SAN-2",
      "include_all": false,
      "case_ids": [1, 2, 3, 4, 7, 8]
	}
)	

프로젝트에 test suite 생성

result = client.send_post(
    'add_suite'/{project_id}',
    {
    	"name": "This is a new test suite",
    	"description": "Use the description to add additional context details"
	}
)	

특정 세션에 케이스 추가

result = client.send_post(
    'add_case/{section_id}',
    {
        "title": "My test case (text)",
        "template_id": 1,
        "type_id": 1,
        "priority_id": 1,
        "estimate": "3m",
        "refs": "TR-1, TR-2",
        "custom_preconds": "My preconditions",
        "custom_steps": "My test steps",
        "custom_expected": "My expected final results"
    }
)	

Case 업데이트

업데이트 시에는 업데이트를 원하는 필드만 입력하면 됩니다.

result = client.send_post(
    'update_case'/{case_id},
    {
        "priority_id": 1,
        "estimate": "3m"
    }
 )	

Case 가져오기

case = client.send_get('get_case/1')

Attachment 추가

  • Case 에 Attachment 추가
    result = client.send_post('add_attachment_to_case/{{case_id}', 'C:\\screenshot.jpg')
  • Run 에 Attachment 추가
    result = client.send_post('add_attachment_to_run/{run_id}', 'C:\\screenshot.jpg')
  • Result 에 Attachment 추가
    result = client.send_post('add_attachment_to_result/{result_id}', 'C:\\screenshot.jpg')

Run 에 테스트 결과들 추가

result = client.send_post(
    'add_results_for_cases'/{run_id},
    {
      "results": [
          {
              "case_id": 1,
              "status_id": 5,
              "comment": "This test failed",
              "defects": "TR-7"
          },
          {
              "case_id": 2,
              "status_id": 1,
              "comment": "This test passed",
              "elapsed": "5m",
              "version": "1.0 RC1"
          },
          {
              "case_id": 1,
              "assignedto_id": 5,
              "comment": "Assigned this test to Joe"
          }
      ]
	}
)	

참고 :
https://support.testrail.com/hc/en-us/articles/7077135088660-Binding-Python
https://support.testrail.com/hc/en-us/articles/15758390538260-Importing-test-results
https://support.testrail.com/hc/en-us/articles/7077819312404-Results
https://support.testrail.com/hc/en-us/articles/7077083596436#01G68HCTTPY0YHGMTTY5VHYYGS
https://support.testrail.com/hc/en-us/articles/7077918603412-Sections#addsection

profile
주니어 QA 🐥

0개의 댓글