Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana untuk mengejek Fail Terbuka dalam Python Dengan Pernyataan Menggunakan Rangka Kerja Ujian Unit?
Mengejek Fail Terbuka dalam Dengan Pernyataan dalam Rangka Kerja Ujian Unit Python
Apabila menguji kod yang menggunakan fail terbuka dalam dengan pernyataan, keperluan timbul untuk mengejek fail terbuka ini untuk ujian unit yang tepat. Artikel ini menyelidiki pendekatan untuk mengejek fail sedemikian menggunakan rangka kerja Mock Python.
Python Versi 3
Rangka kerja Mock menyediakan fungsi mock_open, yang boleh digunakan bersama dengan pengurus konteks tampung untuk mengejek fail terbuka. Fungsi tampalan, digunakan sebagai pengurus konteks, mengembalikan objek yang menggantikan objek tampalan:
<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>
Sebagai alternatif, fungsi tampalan boleh digunakan sebagai penghias dengan hujah new_callable. Ingat bahawa argumen tambahan yang tidak digunakan oleh tampung akan dihantar ke fungsi 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>
Dalam kes ini, objek yang diejek akan dihantar sebagai hujah kepada fungsi ujian.
Python Versi 2
Untuk Python 2, modul __builtin__.open perlu ditampal dan bukannya builtins.open, dan rangka kerja olok-olok mesti dipasang secara berasingan melalui pip:
<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>
Teknik ini membolehkan mengejek fail terbuka yang berkesan dalam dengan pernyataan, memudahkan ujian unit komprehensif untuk aplikasi Python.
Atas ialah kandungan terperinci Bagaimana untuk mengejek Fail Terbuka dalam Python Dengan Pernyataan Menggunakan Rangka Kerja Ujian Unit?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!