Pytest 테스트 프레임워크 기본 사용 방법 상세 정보
pytest는 매우 성숙한 전 기능의 Python 테스트 프레임워크로 주요 특징은 다음과 같다.
1. 간단하고 유연하며 손에 넣기 쉽고 문서가 풍부하다.
2. 매개 변수화를 지원하여 테스트할 테스트 용례를 세밀하게 제어할 수 있다.
3. 간단한 단원 테스트와 복잡한 기능 테스트를 지원할 수 있고selenium/appnium 등 자동화 테스트, 인터페이스 자동화 테스트(pytest+requests)에도 사용할 수 있다.
4.pytest는 많은 제3자 플러그인을 가지고 있으며 사용자 정의 확장이 가능합니다
6. CI 도구와 잘 결합할 수 있다. 예를 들어 Jenkins
규칙 작성:
빠른 예
test_pyexample.py
import pytest
class TestClass:
def test_one(self):
x = "this"
assert 'h' in x
def test_two(self):
x = "hello"
assert hasattr(x, 'check')
def test_three(self):
a = "hello"
b = "hello world"
assert a in b
명령줄에서 실행:1. 코드가 있는 디렉터리에 cd, 명령을 실행:py.test test_pyexample.py
2,pytest-sugar 플러그인을 설치하면 진도표를 볼 수 있습니다
Pycharm 구성 실행:
1.file->Setting->Tools->Python Integrated Tools-> 프로젝트 이름->Default test runner->선택py.test
import pytest
class TestClass:
def test_one(self):
x = "this"
assert 'h' in x
def test_two(self):
x = "hello"
assert hasattr(x, 'check')
def test_three(self):
a = "hello"
b = "hello world"
assert a in b
if __name__ == "__main__":
pytest.main('-q test_class.py')
Console 공통 매개변수 설명:
py.test # run all tests below current dir
py.test test_mod.py # run tests in module file test_mod.py
py.test somepath # run all tests below somepath like ./tests/
py.test -k stringexpr # only run tests with names that match the
# the "string expression", e.g. "MyClass and not method"
# will select TestMyClass.test_something
# but not TestMyClass.test_method_simple
py.test test_mod.py::test_func # only run tests that match the "node ID",
# e.g "test_mod.py::test_func" will be selected
# only run test_func in test_mod.py
pytest 매개 변수화장식기 사용: @pytest.mark.parametrize()
개별 매개변수:
import pytest
import random
@pytest.mark.parametrize('x',[(1),(2),(6)])
def test_add(x):
print(x)
assert x==random.randrange(1,7)
여러 매개변수:
import pytest
@pytest.mark.parametrize('x,y',[
(1+2,3),
(2-0,1),
(6*2,12),
(10*2,3),
("test","test"),
])
def test_add(x,y): # , x,y
assert x==y
테스트 실행 순서 제어pytest-ordering 설치
pip install pytest-ordering
장식기 @pytest를 빌려주세요.mark.run(order=1) 테스트 실행 순서 제어
import pytest
import time
value=0
@pytest.mark.run(order=2) # order=2
def test_add2():
print("I am 2")
time.sleep(2)
assert value==10
@pytest.mark.run(order=1) # order=1
def test_add():
print("I am add")
global value
value=10
assert value==10
실행 후 테스트 보고서 생성(htmlReport)pytest-html 설치:
pip install -U pytest-html
사용 방법:
py.test test_pyexample.py --html=report.html
더 자세한 테스트 보고서
pytest-cov 설치:
pip install pytest-cov
어떻게 사용합니까
py.test --cov-report=html --cov=./ test_code_target_dir
Console
--cov=[path], measure coverage for filesystem path (multi-allowed), ,
--cov-report=type, type of report to generate: term, term-missing, annotate, html, xml (multi-allowed),
--cov-config=path, config file for coverage, default: .coveragerc, coverage
--no-cov-on-fail, do not report coverage if test run fails, default: False, ,
--cov-fail-under=MIN, Fail if the total coverage is less than MIN. MIN,
다중 프로세스 실행pytest-xdist 설치:
pip install -U pytest-xdist
사용 방법:
py.test test_pyexample.py -n NUM
여기서 NUM은 동시 실행된 프로세스 수를 작성합니다.
재실행 실패 용례
pytest-rerunfailures 설치:
import random
def add(x,y):
return x+y
def test_add():
random_value=random.randint(2,7)
print('random_value:'+str(random_value))
assert add(1,3)==random_value
사용 방법:명령:pytest --reruns 재시도 횟수
예를 들어pytest--reruns3는 실행에 실패한 용례를 세 번 다시 실행할 수 있음을 나타낸다
명령:pytest --reruns 재시도 횟수 --reruns-delay 횟수 사이의 시간 지연 설정 (단위:초)
예를 들어pytest--reruns3-reruns-delay5는 (역:서연4,지류) 운행에 실패한 용례는 세 번 다시 실행할 수 있고 첫 번째와 두 번째 간격은 5초이다
또한 장식기를 통해 구성할 수 있습니다.
@pytest.mark.flaky(reruns=3, reruns_delay=5)
이상은 본문의 전체 내용입니다. 여러분의 학습에 도움이 되고 저희를 많이 응원해 주십시오.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Pytest 에서 conftest.py 의 용법우 리 는 이전에 fixture 를 알 고 있 었 습 니 다.fixture 는 테스트 스 크 립 트 에 직접 정의 할 수 있 습 니 다.그러나 어떤 때 는 fixture 가 재 활용 되 기 를 바 랍 니 다.이 는 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.