ptest의 비망록

9338 단어 Pythonpytesttech

개요


pytest에 대한 기사는 많지만 좋아하는 것이 없어서 개인용 비망록을 씁니다.

기본적


pytest의 기본 쓰기 방법은 다음과 같다."test main.py"파일에는 "test test1"함수가 있어 테스트할 때 실행됩니다.그중에 assert가 포함되어 있는데, 이것은 테스트할 때 확인해야 할 것이다.
test_main.py
def test_test1():
    value1 = "inu"
    value2 = "inu"
    assert value1 == value2
그런 다음 다음 다음 명령을 입력하면 결과가 표시됩니다.이 때 실행된 함수 이름의 헤더의 물건.
> pytest ./test_main.py

여러 테스트 용례 실행


위 함수를 사용하여 여러 테스트 용례를 실행하려면 다음과 같이 수정합니다.명령은 아까와 같다.
test_main.py
import pytest

@pytest.mark.parametrize("value1,value2", [
    "inu", "inu",
    "inu", "dog",
    "dog", "cane",
])
def test_test1(value1, value2):
    assert value1 == value2
실행하면 테스트용례 1은 OK지만 나머지는 NG입니다.

테스트 시 사전 처리, 사후 처리 수행


테스트에서 전처리, 후처리를 실행할 때 다음과 같은 개조를 진행할 것이다.
test_main.py
import pytest

@pytest.fixture
def fixture1():
    print("@fixture1 start")
    yield
    print("@fixture1 end")

@pytest.fixture
def fixture2():
    print("@fixture2 start")
    yield
    print("@fixture2 end")


@pytest.mark.parametrize("value1,value2", [
    "inu", "inu",
    "inu", "dog",
    "dog", "cane",
])
@pytest.mark.usefixtures("fixture1,fixture2")
def test_test1(value1, value2):
    assert value1 == value2
이것도 아래의 기술을 진행할 수 있다.
test_main.py
import pytest

@pytest.fixture
def fixture1():
    print("@fixture1 start")
    yield
    print("@fixture1 end")

@pytest.fixture
def fixture2():
    print("@fixture2 start")
    yield
    print("@fixture2 end")


@pytest.mark.parametrize("value1,value2", [
    "inu", "inu",
    "inu", "dog",
    "dog", "cane",
])
def test_test1(value1, value2, fixture1,fixture2):
    # この場合、fixture_value = fixture1.getValue()といったよう使用できる。
    # これはyieldで値を返していた場合、その値を戻り値として取得することが出来る。
    assert value1 == value2

끝말


내가 먼저 썼어.그냥 내 방식대로 찾아봤기 때문에 더 좋은 방법이 있어야 한다고 생각했지만 기록까지 해야 한다고 생각했어요.

참고 자료

  • 0부터 파이썬 배우기:https://rinatz.github.io/python-book/ch08-02-pytest/
  • 좋은 웹페이지 즐겨찾기