Bagaimana untuk mengejek Fail Terbuka dalam Python Dengan Pernyataan Menggunakan Rangka Kerja Ujian Unit?

Linda Hamilton
Lepaskan: 2024-10-20 16:23:29
asal
525 orang telah melayarinya

How to Mock Open Files in Python's With Statements Using the Unit Test Framework?

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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!

sumber:php
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!