본문으로 건너뛰기

pytest

pytest

pytest [options] [file_or_dir ...]

설정

pytest.ini, tox.ini, pyproject.toml 등 파일에 아래 와 같은 설정을 추가할 수 있습니다.

pyproject.toml
[tool.pytest.ini_options]
testpaths = [
"src",
"tests",
]

pytest 검색 규칙

  • 정해진 디렉터리나 파일이 없는 경우 testpaths 또는 현재 디렉터리 검색
  • norecursedirs을 제외한 디렉터리는 재귀적으로 검색
  • 디렉터리 안의 test_*.py 또는 *_test.py 파일 테스트(python_files = test_*.py *_test.py)
  • 테스트 되는 파일 안에 있는 test* 메서드(python_functions = test*)
  • 테스트 되는 파일 안에 있는 Test* 클래스의 test* 메서드(python_classes = Test*)
  • unittest.TestCase

Fixture

  • 한 test 당 fixture는 한 번 실행됩니다. (scope="function")
  • 한 test를 위해 여러 번 호출되는 fixture는 한 번만 실행되기 때문에, 캐싱 되어 의도와 다른 결과가 나올 수 있습니다.
  • autouse=True를 사용하면 fixture를 지정하지 않더라도 모든 test에 적용됩니다.
  • scope=<option>, "function", "class", "module", "package" or "session" 을 사용하여 캐싱 되는 스코프를 정할 수 있습니다.
  • yield를 사용하면 fixture에서 생성된 것을 test에서 사용한 후 정리하는 코드를 작성하기 쉽습니다.
  • ...