Pytest 에서 conftest.py 의 용법

4426 단어 Pytestconftest.py
머리말
앞서 fixture 를 소개 한 글 에서 conftest.py 파일 을 사 용 했 습 니 다.그렇다면 conftest.py 파일 은 어떻게 사용 해 야 하 는 지,conftest.py 파일 의 특징 과 사용 방법 을 자세히 알 아 보 겠 습 니 다.
conftest.py 가 뭐야?
우 리 는 이전에 fixture 를 알 고 있 었 습 니 다.fixture 는 테스트 스 크 립 트 에 직접 정의 할 수 있 습 니 다.그러나 어떤 때 는 fixture 가 재 활용 되 기 를 바 랍 니 다.이 는 fixture 에 대해 집중 적 으로 관리 해 야 합 니 다.Pytest 는 파일conftest.py을 사용 하여 펌웨어 를 집중 적 으로 관리 해 야 합 니 다.복잡 한 프로젝트 에서 서로 다른 디 렉 터 리 등급 에서 conftest.py 를 정의 할 수 있 습 니 다.그 역할 도 메 인 은 그 가 있 는 디 렉 터 리 와 하위 디 렉 터통상 적 으로conftest.py@pytest.fixture()는 결합 하여 사용 하여 전체적인 전후 처 리 를 실현 한다.
conftest.py 특징
  • conftest.py파일 의 이름 은 고정 되 어 수정 할 수 없습니다
  • conftest.py실행 사례 와 같은 pakage 에서__init__.py파일
  • 이 있어 야 합 니 다.
  • 가 져 올 필요 가 없습니다import파일 을 가 져 올 필요 가 없습니다.pytest 는 예회 로 이 파일 을 자동 으로 식별 합 니 다.루트 디 렉 터 리 에 놓 으 면 전체 디 렉 터 리 에서 호출 할 수 있 습 니 다.특정한 package 에 놓 으 면 이 package 에서 유효 합 니 다
  • 서로 다른 디 렉 터 리 는 자신의 conftest.py 가 있 고 한 항목 에 여러 개conftest.py
  • 가 있 을 수 있 습 니 다.
  • pytest 는 기본적으로 읽 기conftest.py안의 모든 fixture 를 읽 습 니 다.같은 디 렉 터 리 테스트 파일 이 실행 되 기 전에conftest.py파일
  • 을 실행 합 니 다.
    conftest.py 용법
    실제 테스트 에서 conftest.py 파일 은 fixture 와 결합 하여 사용 해 야 하기 때문에 fixture 에서 매개 변수 scope 도 conftest.py 에서 fixture 의 특성 을 적용 합 니 다.여기 서 다시 설명 하 겠 습 니 다.
  • conftest 에서 fixture 의 scope 인 자 는 session 이 고 모든 테스트 파일 이 실행 되 기 전(후)한 번conftest.py파일 의 fixture 를 실행 합 니 다.
  • conftest 에서 fixture 의 scope 인 자 는 module 이 고 테스트.py 파일 이 실행 되 기 전(후)한 번conftest.py파일 의 fixture
  • 를 실행 합 니 다.
  • conftest 에서 fixture 의 scope 인 자 는 class 이 고 테스트 파일 의 테스트 클래스 가 실행 되 기 전(후)한 번conftest.py파일 의 fixture
  • 를 실행 합 니 다.
  • conftest 에서 fixture 의 scope 인 자 는 function 이 고 모든 파일 의 테스트 용례 가 실행 되 기 전(후)한 번conftest.py파일 의 fixture
  • 를 실행 합 니 다.
    conftest.py 실제 사례
    우 리 는 이러한 디 렉 터 리 에 따라 항목 을 새로 만 들 었 다.

    루트 디 렉 터 리 conftestdemo 아래
    루트 디 렉 터 리 에 있 는 conftest.py 파일 에 서 는 로그 인 같은 전역 fixture 를 씁 니 다.
    conftest.py
    
    import pytest
    
    
    @pytest.fixture(scope="session")
    def login():
        print("***    ,     ***")
        name = "rockche"
        yield name
        print("***    ***")
    
    
    @pytest.fixture(autouse=True)
    def get_name(login):
        name = login
        print(f"--         fixiture:    name:{name}--")
    루트 디 렉 터 리 의 테스트 용례
    test_1.py
    
    def test_get_name(login):
        name = login
        print("***    :    name***")
        print(f"   :{name}")
    conftestdemo 의 모든 용례 를 실행 합 니 다.
    run.py
    
    import pytest
    
    if __name__ == '__main__':
        pytest.main(["-s", "../conftestdemo/"])
    test_baidu 디 렉 터 리 아래
    baidu 사이트 에 대한 테스트 용례 만 의 fixture 설정
    conftest.py
    
    import pytest
    
    
    @pytest.fixture(scope="module")
    def open_baidu(login):
        name = login
        print(f"   {name}   baidu")
    test_case1.py
    
    def test_case2_01(open_baidu):
        print("  pytest")
    
    
    def test_case2_02(open_baidu):
        print("     ")
    test_cnblogs 디 렉 터 리 아래
    파일 도 없고 conftest.py 파일 도 없습니다.
    test_case1.py
    
    def test_no_fixture(login):
        print("  __init__  ,    cnblogs", login)
    test_목록
    taobao 사이트 에 대한 테스트 용례 만 의 fixture 설정
    conftest.py
    
    import pytest
    
    
    @pytest.fixture(scope="function")
    def open_taobao(login):
        name = login
        print(f"   {name}     ")
    test_case1.py
    
    class TestTaobao:
        def test_case1_01(self, open_taobao):
            print("    ")
    
        def test_case1_02(self, open_taobao):
            print("      ")
    run.py 실행

    Pytest 에서 conftest.py 의 용법 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 Pytest conftest.py 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 많은 응원 부 탁 드 리 겠 습 니 다!

    좋은 웹페이지 즐겨찾기