
이번 글에서는 Testrail API의 사용을 위해 TestRail에서 제공해주는 API MANUAL 를 정리했습니다.
Python 용 바인딩 파일을 통해 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는 아래 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 reference 의 예시를 추후 사용에 용이하도록 Python 용으로 수정한 예시입니다.
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]
}
)
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"
}
)
업데이트 시에는 업데이트를 원하는 필드만 입력하면 됩니다.
result = client.send_post(
'update_case'/{case_id},
{
"priority_id": 1,
"estimate": "3m"
}
)
case = client.send_get('get_case/1')
result = client.send_post('add_attachment_to_case/{{case_id}', 'C:\\screenshot.jpg')result = client.send_post('add_attachment_to_run/{run_id}', 'C:\\screenshot.jpg')result = client.send_post('add_attachment_to_result/{result_id}', 'C:\\screenshot.jpg')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