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 중국어 웹사이트의 기타 관련 기사를 참조하세요!