Maison > développement back-end > Tutoriel Python > Comment simuler des fichiers ouverts dans des instructions Python à l'aide du framework de tests unitaires ?

Comment simuler des fichiers ouverts dans des instructions Python à l'aide du framework de tests unitaires ?

Linda Hamilton
Libérer: 2024-10-20 16:23:29
original
645 Les gens l'ont consulté

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

Se moquer des fichiers ouverts dans les instructions With dans le cadre de tests unitaires de Python

Lors du test du code qui utilise des fichiers ouverts dans les instructions with, il est nécessaire de moquez-vous de ces fichiers ouverts pour des tests unitaires précis. Cet article examine les approches permettant de se moquer de ces fichiers à l'aide du framework Mock de Python.

Python version 3

Le framework Mock fournit la fonction mock_open, qui peut être utilisée conjointement avec le gestionnaire de contexte de correctifs pour simuler les fichiers ouverts. La fonction patch, utilisée comme gestionnaire de contexte, renvoie l'objet qui remplace l'objet 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>
Copier après la connexion

Alternativement, la fonction patch peut être utilisée comme décorateur avec l'argument new_callable. N'oubliez pas que les arguments supplémentaires non utilisés par patch seront transmis à la fonction 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>
Copier après la connexion

Dans ce cas, l'objet simulé sera passé en argument à la fonction test.

Python Version 2

Pour Python 2, le module __builtin__.open doit être corrigé au lieu de buildins.open, et le framework fictif doit être installé séparément via 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>
Copier après la connexion

Ces techniques permettent de se moquer efficacement des fichiers ouverts dans les instructions with, facilitant ainsi les tests unitaires complets pour les applications Python.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal