"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > 자동화된 테스트를 위한 Python의 Shutil 모듈

자동화된 테스트를 위한 Python의 Shutil 모듈

2024-08-27에 게시됨
검색:906

Python

소개

소프트웨어 개발의 동적 영역에서는 자동화된 테스트를 통해 애플리케이션 품질을 보장하는 것이 중요합니다. 자동화된 테스트에는 특정 파일 및 디렉터리 설정이 필요한 수많은 테스트 실행이 포함됩니다. 테스트 환경을 효율적으로 설정하고 해체하는 것은 이 프로세스의 중요한 부분이며, 적절한 도구가 없으면 지루하고 오류가 발생하기 쉬운 작업이 될 수 있습니다.

작업을 단순화하는 데 적합한 도구를 찾으면 큰 변화를 가져올 수 있습니다. Shutil로 알려진 표준 유틸리티 모듈은 Shell Utility의 약어입니다. 테스트 환경 관리를 단순화할 수 있는 파일 및 디렉터리 복사, 이동 및 제거를 위한 높은 수준의 파일 작업을 제공합니다. 이 블로그에서는 quitil 모듈이 자동화된 소프트웨어 테스트에서 파일 작업을 간소화할 수 있는 방법을 설명합니다.

각 테스트가 올바른 환경에서 시작되도록 하려면 설정 프로세스를 자동화하여 일관되고 격리된 테스트 환경을 조성해야 합니다.

Shutil 시작하기

Shutil 모듈은 Python 표준 라이브러리의 일부이므로 추가로 설치할 필요가 없습니다. 스크립트 시작 부분에서 간단히 가져오세요.

# Import shell utility module
import shutil

필수 파일 복사 방법

애플리케이션을 테스트하는 동안 특정 데이터 파일 세트가 필요한 경우가 많습니다. 파일을 수동으로 복사하는 대신, 일반적인 네 가지 방법을 사용하면 shutdown 모듈을 사용하여 파일을 쉽고 효율적으로 복사할 수 있습니다.

  1. shutil.copy()
  2. shutil.copy2()
  3. shutil.copyfile()
  4. shutil.copyfileobj()

1.shutil.copy() 메소드

shutil.copy(source, destination, *, follow_symlinks=True)

이 메서드는 소스 파일을 대상에 지정된 디렉터리 또는 파일에 복사하고 파일의 대상을 반환합니다. 파일의 데이터와 파일의 권한 모드를 복사하지만 복사된 파일의 메타데이터(파일 생성 및 수정 시간)는 유지되지 않습니다. 소스와 대상은 경로류 객체 또는 문자열이어야 합니다. 대상은 파일 또는 디렉터리를 모두 지정할 수 있습니다. 대상이 디렉터리 경로를 지정하는 경우 파일은 원본 경로의 파일 이름을 사용하여 대상 디렉터리에 복사됩니다.
심볼릭 링크로 작업하는 동안:

  • follow_symlinks=True인 경우 대상은 소스의 심볼릭 링크가 가리키는 파일의 복사본이 됩니다. 매개변수 follow_symlinks의 기본값은 True입니다.

  • follow_symlinks=False인 경우 대상이 심볼릭 링크로 생성됩니다.

# Import shell utility module
import shutil

#  Copy the content of source_file.txt to destination_file.txt
shutil.copy('source_file.txt', 'destination_file.txt')

2. shutdown.copy2() 메소드

shutil.copy2(source, destination, *, follow_symlinks=True)

shutil.copy2() 메서드는 파일의 모든 메타데이터를 보존하는 추가 기능을 제공합니다. 다른 특징은 shutdown.copy() 메서드와 동일합니다. 대상은 파일 또는 디렉터리를 모두 지정할 수 있습니다. 대상이 디렉터리인 경우 원본 파일 이름과 동일한 이름으로 파일이 복사됩니다.

# Import shell utility module
import shutil

#  Copy the content of source_file.txt to destination_file.txt
shutil.copy2('source_file.txt', 'destination_file.txt')

그래픽 파일 관리자에서 키보드 단축키를 사용하여 파일을 복사하고 붙여넣는 것과 동일한 결과를 프로그래밍 방식으로 얻을 수 있도록 대부분의 관련 메타데이터와 함께 파일 내용을 복사하므로 테스트를 자동화하는 동안 이 방법을 사용했습니다. 그래픽 파일 관리자에서 마우스를 사용하여 일반적인 복사 및 붙여넣기 작업의 동작을 복제합니다.

3. shutdown.copyfile() 메소드

shutil.copyfile(source, destination, *, follow_symlinks=True)

이 방법을 사용하면 파일 콘텐츠가 메타데이터 없이 소스에서 대상으로 복사됩니다. 소스와 대상은 경로류 객체 또는 문자열이어야 합니다. 대상 경로는 파일 경로만 지정할 수 있고 디렉터리 경로는 지정할 수 없습니다.

# Import shell utility module
import shutil

#  Copy the content of source_file.txt to destination_file.txt
shutil.copyfile('source_file.txt', 'destination_file.txt')

4. quitil.copyfileobj() 메서드

shutil.copyfileobj(fsrc, fdst, length)

이 메서드는 소스 파일 객체의 내용을 대상 파일 객체에 복사합니다. 소스와 대상은 파일류 객체여야 합니다. 메타데이터를 보존하지 않으며 어떤 값도 반환하지 않습니다. 선택적 길이 매개변수는 버퍼 크기에 대한 정수 값을 지정합니다.

# Import shell utility module
import shutil

# Create file objects
source_file_object = open("../hello.txt", "r")
destination_file_object = open("CopyFile/copyFalseSrcPath.txt", "w")

# Copy the content of the file object to another file object
shutil.copyfileobj(source_file_object, destination_file_object)

일반적인 실수 방지:

  • shutil.copy(), quitil.copy2() 및 quitil.copyfile()에서 원본과 대상은 동일한 경로를 지정할 수 없습니다. 소스와 대상이 동일한 파일 경로를 지정하면 "SameFileError" 예외가 발생합니다. 이 오류는 quitil.copyfileobj()에서 발생하지 않습니다. 대상 파일이 이미 존재하는 경우 덮어쓰기 때문입니다.
  • 소스가 존재하지 않는 파일의 경로를 지정하면 "FileNotFound" 오류가 발생합니다.

결론

각 방법은 파일 작업의 다양한 측면을 제공하여 다양한 테스트 요구 사항을 충족할 수 있는 유연성과 성능을 제공합니다. Python의 shutdown 모듈은 소프트웨어 테스트에서 효율적인 파일 작업을 위한 필수 도구를 제공합니다:

  • shutdown.copy: 권한을 포함한 기본 파일 복사에 적합합니다.
  • shutdown.copy2: 타임스탬프를 포함한 대부분의 메타데이터와 함께 파일을 복사하는 데 적합합니다.
  • shutdown.copyfile: 메타데이터 없이 빠르고 간단한 콘텐츠 복사에 가장 적합합니다.
  • shutdown.copyfileobj: 파일과 유사한 객체 간의 정확한 복사를 가능하게 합니다.

테스트를 자동화하는 동안 도움이 될 수 있는 일반적으로 사용되는 유틸리티 기능은 다음과 같습니다.

  1. shutdown.mkdirs(): 재귀적으로 디렉터리를 생성합니다. 파일을 테스트하거나 구성하는 데 필요한 디렉터리 구조를 설정하는 데 유용합니다.
  2. shutdown.copytree(): 전체 디렉터리 트리를 반복적으로 복사합니다. 테스트 또는 배포를 위한 환경을 생성하거나 백업하기 위해 모든 파일 및 하위 디렉터리를 포함한 복잡한 디렉터리 구조를 복제하는 데 이상적입니다.
  3. shutdown.rmtree(): 디렉터리 트리를 반복적으로 삭제합니다. 테스트 후 정리하거나 임시 디렉토리 및 해당 내용을 완전히 제거하는 데 필수적입니다.
  4. shutdown.move(): 파일이나 디렉터리를 다른 위치로 이동합니다. 파일 시스템 내에서 파일이나 디렉터리를 효율적으로 재배치하여 구성이나 배포 프로세스를 용이하게 합니다.
  5. shutdown.make_archive(): 디렉터리와 해당 내용의 아카이브(예: AIP 또는 TAR)를 생성합니다. 배포 또는 백업 목적으로 디렉터리를 패키징하는 데 유용합니다.

더 많은 유틸리티 기능과 자세한 설명은 공식 문서에서 확인할 수 있습니다.

Python의 Shutil 모듈은 소프트웨어 테스트뿐만 아니라 버전 제어 및 배포, 데이터 과학 및 기계 학습, IT 및 시스템 관리, 연구 및 학계 등 다양한 소프트웨어 개발 분야에서 다목적 도구 세트 역할을 합니다. 더.

Shutil을 테스트 프로세스에 통합하면 최소한의 코드로 복잡한 파일 작업을 수행할 수 있어 시간과 노력을 절약하고 고품질 소프트웨어 개발에 집중할 수 있습니다.

릴리스 선언문 이 글은 https://dev.to/jankaritech/pythons-shutil-module-for-automated-testing-413n?1에서 복제됩니다.1 침해 내용이 있는 경우, [email protected]으로 연락하여 삭제하시기 바랍니다.
최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3