Python Unittest.Mock에서 열린 파일을 모의하는 방법은 무엇입니까?

Linda Hamilton
풀어 주다: 2024-10-20 16:27:02
원래의
381명이 탐색했습니다.

How to Mock Open Files in Python Unittest.Mock?

Python Unittest.Mock에서 열린 파일 모의

파일 작업을 활용하는 Python 코드를 테스트할 때 열린 파일의 동작을 효과적으로 모의하는 것이 필수적입니다. . 다음 코드에서 볼 수 있듯이 with 문 내에서 open을 사용할 때 특정 시나리오가 발생합니다.

<code class="python">def testme(filepath):
    with open(filepath) as f:
        return f.read()</code>
로그인 후 복사

Python 3

이 열기 작업을 모의하려면 다음을 활용하세요. 모의 프레임워크의 일부인 mock_open과 함께 unittest.mock을 사용합니다. patch는 패치된 객체를 대체하는 데 사용된 객체를 반환하는 컨텍스트 관리자 역할을 합니다.

<code class="python">from unittest.mock import patch, mock_open
with patch("builtins.open", mock_open(read_data="data")) as mock_file:
    assert open("path/to/open").read() == "data"
mock_file.assert_called_with("path/to/open")</code>
로그인 후 복사

또는 patch를 데코레이터로 사용할 수도 있습니다. 그러나 mock_open()의 결과를 새 인수로 사용하는 것은 번거로울 수 있습니다. 대신, 패치의 new_callable 인수를 활용하고 패치에서 사용되지 않는 추가 인수가 new_callable 함수에 전달된다는 점을 기억하세요.

<code class="python">@patch("builtins.open", new_callable=mock_open, read_data="data")
def test_patch(mock_file):
    assert open("path/to/open").read() == "data"
    mock_file.assert_called_with("path/to/open")</code>
로그인 후 복사

패치는 이 인스턴스에서 테스트 함수에 대한 인수로 모의 개체를 제공한다는 점에 유의하세요. .

Python 2

Python 2의 경우 대신 __builtin__.open을 패치하고 모의 개체를 별도로 가져와야 합니다.

<code class="python">from mock import patch, mock_open
with patch("__builtin__.open", mock_open(read_data="data")) as mock_file:
    assert open("path/to/open").read() == "data"
mock_file.assert_called_with("path/to/open")</code>
로그인 후 복사

위 내용은 Python Unittest.Mock에서 열린 파일을 모의하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!