Bagaimana untuk Mengejek Fail Terbuka dalam Python Unittest.Mock?

Linda Hamilton
Lepaskan: 2024-10-20 16:27:02
asal
381 orang telah melayarinya

How to Mock Open Files in Python Unittest.Mock?

Mengejek Fail Terbuka dalam Python Unittest.Mock

Apabila menguji kod Python yang menggunakan operasi fail, mengejek gelagat fail terbuka secara berkesan adalah penting . Satu senario khusus timbul apabila buka digunakan dalam pernyataan dengan, seperti yang dilihat dalam kod berikut:

<code class="python">def testme(filepath):
    with open(filepath) as f:
        return f.read()</code>
Salin selepas log masuk

Python 3

Untuk mengejek operasi terbuka ini, gunakan unittest.mock bersempena dengan mock_open, yang merupakan sebahagian daripada rangka kerja olok-olok. patch berfungsi sebagai pengurus konteks, mengembalikan objek yang digunakan untuk menggantikan yang ditampal:

<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, patch boleh digunakan sebagai penghias. Walau bagaimanapun, menggunakan hasil mock_open() kerana hujah baharu mungkin menyusahkan. Sebaliknya, gunakan argumen new_callable patch dan ingat bahawa argumen tambahan yang tidak digunakan oleh patch 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

Perhatikan bahawa patch akan menyediakan objek yang diejek sebagai argumen kepada fungsi ujian dalam kejadian ini .

Python 2

Untuk Python 2, perlu menampal __builtin__.open dan mengimport mock secara berasingan:

<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

Atas ialah kandungan terperinci Bagaimana untuk Mengejek Fail Terbuka dalam Python Unittest.Mock?. 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!