[PYTHON] pytest에서 테스트 케이스 실행 순서
PYTHONpytest에서 테스트 케이스 실행 순서
나는 pytest를 사용하고있다. 디렉토리에 두 개의 파일이 있습니다. 파일 중 하나에서 일부 출력을 생성하는 장기 실행 테스트 케이스가 있습니다. 다른 파일에는 그 출력을 읽는 테스트 케이스가 있습니다. 두 테스트 케이스의 적절한 실행 순서를 어떻게 보장 할 수 있습니까? 테스트 케이스를 동일한 파일에 적절한 순서로 넣는 것 외에 다른 대안이 있습니까?
해결법
-
==============================
1.일반적으로 잘 정의 된 후크를 사용하여 기본적으로 pytest의 모든 부분의 동작을 구성 할 수 있습니다.
일반적으로 잘 정의 된 후크를 사용하여 기본적으로 pytest의 모든 부분의 동작을 구성 할 수 있습니다.
귀하의 경우, "pytest_collection_modifyitems"후크가 필요하므로 수집 된 테스트를 다시 주문할 수 있습니다.
즉, 테스트가 더 쉬워 지도록 명령하는 것처럼 보입니다. 이것은 결국 Python입니다! 그래서 테스트 주문을위한 플러그인을 작성했습니다 : "pytest-ordering". 문서를 확인하거나 pypi에서 설치하십시오. 지금은 @ pytest.mark.first와 @ pytest.mark.second 또는 @ pytest.mark.order # 마커 중 하나를 사용하는 것이 좋습니다. 그러나 더 유용한 API에 대한 아이디어가 있습니다. 제안 환영 :)
-
==============================
2.또한 요구 사항을 충족하는 것으로 보이는 pytest-ordering 플러그인이 있습니다.
또한 요구 사항을 충족하는 것으로 보이는 pytest-ordering 플러그인이 있습니다.
-
==============================
3.pytest가 알파벳 순으로 테스트를 실행하는 것처럼 보입니다. 이렇게하면 다음과 같은 방법으로 시도 할 수 있습니다.
pytest가 알파벳 순으로 테스트를 실행하는 것처럼 보입니다. 이렇게하면 다음과 같은 방법으로 시도 할 수 있습니다.
def test_a_first_test(): pass def test_b_second_test(): pass def test_o_middle_test(): pass
-
==============================
4.어쩌면 당신은 의존성 pytest 플러그인을 사용하는 것을 고려해 볼 수 있습니다. 테스트 종속성을 쉽게 설정할 수 있습니다 :
어쩌면 당신은 의존성 pytest 플러그인을 사용하는 것을 고려해 볼 수 있습니다. 테스트 종속성을 쉽게 설정할 수 있습니다 :
@pytest.mark.dependency() def test_long(): pass @pytest.mark.dependency(depends=['test_long']) def test_short(): pass
이렇게하면 test_long이 성공한 경우에만 test_short가 실행되고 실행 순서도 강제 실행됩니다.
-
==============================
5.이 시도:
이 시도:
@pytest.fixture(xxx) def test_A(): pass yield pass @pytest.mark.usefixtures('test_A') def test_B(): pass
-
==============================
6.main.py:
main.py:
import functools import pytest from demo import test_foo,test_hi def check_depends(depends): try: for dep in depends: dep() except Exception as e: return dep else: return True def pytest_depend(depends): def pytest_depend_decorator(func): stat = check_depends(depends) if stat is True: return func else: return pytest.mark.skip(True, reason="%s[skip] --> %s[Failed]" % (func.__name__, stat.__name__))(func) return pytest_depend_decorator @pytest_depend([test_foo,test_hi]) def test_bar(): pass @pytest_depend([test_foo,test_hi]) def test_bar2(): pass
demo.py:
def test_hi(): pass def test_foo(): assert False
플랫폼 linux - Python 3.5.2, pytest-3.8.2, py-1.6.0, pluggy-0.7.1 - / usr / bin / python3
from https://stackoverflow.com/questions/17571438/test-case-execution-order-in-pytest by cc-by-sa and MIT license
'PYTHON' 카테고리의 다른 글
[PYTHON] 임포트 텐서 흐름을 실행 한 후 잘못된 명령 (코어 덤프 됨) (0) | 2018.11.02 |
---|---|
[PYTHON] Python은 선형 보간법을 사용하여 불규칙한 시계열을 정규화합니다. (0) | 2018.11.02 |
[PYTHON] 어떻게 파이썬 - Levenshtein.ratio 계산됩니다 (0) | 2018.11.01 |
[PYTHON] YouTube의 API를 사용하여 YouTube 동영상을 다운로드하는 방법은 무엇입니까? (0) | 2018.11.01 |
[PYTHON] 부동 소수점 숫자를 가장 가까운 정수로 반올림 하시겠습니까? (0) | 2018.11.01 |