런타임 중에 테스트 이름과 테스트 결과를 얻고 싶습니다. 스크립트에는 setup 및 tearDown 메서드가 있습니다. 및 설치 방법에서 테스트 이름을 가져오고 tearDown에서 테스트 결과를 가져와 실행 시간을 테스트해야합니다.pytest에서 런타임 동안 테스트 이름과 테스트 결과를 얻는 방법
답변
unittest.TestCase.id() 클래스 이름, 메소드 이름을 포함한 전체 세부 정보를 반환합니다. 여기에서 테스트 메소드 이름을 추출 할 수 있습니다. 테스트를 실행할 때 예외가 있는지 확인하여 결과를 가져올 수 있습니다. 테스트가 실패하면 sys.exc_info()가 None을 반환하면 테스트가 실패하고 그렇지 않으면 테스트가 통과합니다. 그렇지 않으면 else 테스트가 실패합니다.
어제 같은 문제에 직면하고
공식 매뉴얼은 나를 위해 도움이되었습니다 :-) 나는 그것을 해결 : http://pytest.org/latest/plugins.html#hook-specification-and-validation
매직 pytest 특별한 후크를 사용하여이 실현. 이 훅은 "pytest_runtest_protocol"입니다. 예외 캡처 및보고 훅 호출을 포함하여 주어진 테스트 항목에 대해 runtest_setup/call/teardown 프로토콜을 구현합니다.
테스트가 완료되면 (시작 또는 분해 또는 테스트와 같이) 호출되는이 후크입니다. 내가 시작, 해체 및 test_tc15 기능을 가지고 test_rest_author.py 파일에서
./rest/
├── conftest.py
├── __init__.py
└── test_rest_author.py
,하지만 난 단지 test_tc15의 FUNC에 대한 결과와 이름을 표시하려면 :
나는 내 테스트 디렉토리에 다음 트리가 있습니다. conftest.py 파일에서
:
import pytest
from _pytest.runner import runtestprotocol
def pytest_runtest_protocol(item, nextitem):
reports = runtestprotocol(item, nextitem=nextitem)
for report in reports:
if report.when == 'call':
print '\n%s --- %s' % (item.name, report.outcome)
return True
을하고 스크립트를 실행하는 경우 다음을 수행 할 수 있습니다 (경고 : http://pytest.org/latest/plugins.html#conftest-py-local-per-directory-plugins : 같은 이름의 파일을 만들고, 그 자세한 내용은 pytest 특수 파일,의 PLS이 읽기)
$ py.test ./rest/test_rest_author.py
====== test session starts ======
/test_rest_author.py::TestREST::test_tc15 PASSED
test_tc15 --- passed
======== 1 passed in 1.47 seconds =======
이익
:-) : 결과 및 테스트의 이름 참조