Table des matières
✅ Scénario: tester une fonction qui lit les fichiers de configuration
✅ Utilisez patch pour simuler open()
? Description des points clés
✅ Exemples d'imitation de l'écriture dans les fichiers
✅ Conseils: simulez plusieurs appels vers différents fichiers
✅ Résumé: étapes clés
Maison développement back-end Tutoriel Python Python Mock Open Fichier Exemple

Python Mock Open Fichier Exemple

Jul 29, 2025 am 01:41 AM
java programmation

Utilisez @patch ('mymodule.open', new_callable = mock_open) pour simuler les opérations de fichiers pour éviter de vraies fichiers de lecture et d'écriture; 2. Définissez le contenu du fichier Mock via le paramètre mock_open read_data, tel que read_data = 'debug = true'; 3. Vérifiez le résultat de retour et ouvrez les paramètres d'appel lors de la lecture de la fonction; 4. Obtenez la poignée via mock_file () et vérifiez l'appel de la méthode d'écriture lors de l'écriture de la fonction; 5. Utilisez latérale Side_Effect pour retourner plusieurs instances MOCK_OPEN lors de la moquerie de plusieurs lectures de différents fichiers; 6. La clé est que le chemin du patch doit pointer vers le module en utilisant Open, pas Butins.Open, sinon la simulation n'est pas valide.

Python Mock Open Fichier Exemple

L'utilisation de unittest.mock pour simuler les opérations de fichiers dans Python (comme open() ) est une astuce de test courante, surtout si vous souhaitez éviter de vraies fichiers de lecture et d'écriture. Voici un exemple pratique montrant comment utiliser mock pour simuler la fonction open() et les fonctions de test qui lisent ou écrivent des fichiers.

Python Mock Open Fichier Exemple

✅ Scénario: tester une fonction qui lit les fichiers de configuration

Supposons que vous ayez une fonction qui lit un fichier texte et renvoie le contenu:

 # mymodule.py
def read_config (nom de fichier):
    avec ouvert (nom de fichier, «r») comme f:
        return f.read (). strip ()

Nous ne voulons pas réellement lire un fichier pendant les tests, mais utilisez mock pour simuler open() .

Python Mock Open Fichier Exemple

✅ Utilisez patch pour simuler open()

 # test_mymodule.py
De Unittest.mock Import Mock_Open, patch
Importer unittest

# Supposons que la fonction ci-dessus se trouve dans le module Mymodule de Mymodule Import Read_config

classe TestReadConfig (unittest.testcase):

    @patch ('mymodule.open', new_callable = mock_open, read_data = 'debug = true')
    def test_read_config (self, mock_file):
        result = read_config ('config.txt')

        # Vérifiez le résultat sel-assertequal (résultat, 'debug = true')

        # Vérifiez que l'Open est appelé correctement mock_file.assert_called_once_with ('config.txt', 'r')

? Description des points clés

  • @patch('mymodule.open', ...) :
    Notez que le chemin est 'mymodule.open' car open que vous souhaitez patcher est une fonction intégrée utilisée dans le module mymodule . Vous ne pouvez pas dire directement la fonction globale open intégrée , vous devez corriger open dans son module.

  • mock_open(read_data='...') :
    Créer une valeur de retour open() simulée, read_data Spécifie le contenu renvoyé lorsque le fichier est lu.

    Python Mock Open Fichier Exemple
  • with open(...) as f: est automatiquement simulé, f.read() renvoie le contenu de read_data .


✅ Exemples d'imitation de l'écriture dans les fichiers

Supposons que vous ayez une fonction qui écrit des journaux:

 # mymodule.py
def write_log (nom de fichier, message):
    avec ouvert (nom de fichier, 'w') comme f:
        F.Write (message)

Opération d'écriture de test:

 @patch ('mymodule.open', new_callable = mock_open)
def test_write_log (self, mock_file):
    write_log ('log.txt', 'erreur s'est produite')

    # Vérifiez que vous ouvrez ouvert avec 'W' pour ouvrir mock_file.assert_called_once_with ('log.txt', 'w')

    # Vérifiez si l'écriture est appelée manche = mock_file ()
    handle.write.assert_called_once_with ('error s'est produit')

✅ Conseils: simulez plusieurs appels vers différents fichiers

 @patch ('mymodule.open', new_callable = mock_open)
def test_multiple_files (self, mock_file):
    mock_file.side_effected = [
        UNITTEST.MOCK.MOCK_OPEN (read_data = 'file1'). return_value,
        UNITTEST.MOCK.MOCK_OPEN (read_data = 'file2'). return_value,
    ]]

    data1 = read_config ('a.txt')
    data2 = read_config ('b.txt')

    self.assetertequal (data1, 'file1')
    self.asserTequal (data2, 'file2')

✅ Résumé: étapes clés

  • Utilisez @patch('module.open', new_callable=mock_open) .
  • Utilisez read_data pour définir le contenu de fichier simulé.
  • Après les tests, vous pouvez vérifier si open() et write() sont appelés correctement.
  • Notez que le chemin doit être correct (il s'agit d'utiliser des modules open , et non builtins.open ).

Fondamentalement, c'est tout. L'opération de fichier simulé n'est pas compliquée, mais elle est facile à échouer en raison de l'écriture de chemin de correctif incorrecte. N'oubliez pas de vérifier le nom du module et la méthode d'importation.

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!

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

Outils d'IA chauds

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Porce de variable PHP expliquée
1 Il y a quelques mois By 百草
Commentant le code en php
1 Il y a quelques mois By 百草
<🎜>: Grow A Garden - Guide complet des marchands itinérants
4 Il y a quelques semaines By Jack chen
Conseils pour écrire des commentaires PHP
1 Il y a quelques mois By 百草

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Tutoriel PHP
1510
276
Qu'est-ce qu'un hashmap à Java? Qu'est-ce qu'un hashmap à Java? Aug 11, 2025 pm 07:24 PM

AhashmapinjavaisadatastructureThatStoreskey-ValuepraireForeFICETTREVAL, insertion etdeletion.itUshesthekey’shashcode () methodtodeterMinestorageLocationandallowsAtEptoro (1) timeComplexityforget () andput () opérations.

Comment créer et utiliser un tableau en java Comment créer et utiliser un tableau en java Aug 11, 2025 pm 04:00 PM

TOCREATANDUSEAnArrayinjava, FirstdeclatethearraywithThedatatypeAndSquarebrackets, ThenstantiateitwithThenewKeywordOralitializeTirectlywithValues; 1.DeclareAndedCreateArrayusingDataty

Python Argparse exigence de l'argument requis Python Argparse exigence de l'argument requis Aug 11, 2025 pm 09:42 PM

Lorsque vous utilisez le module ArgParse, les paramètres qui doivent être fournis peuvent être obtenus en réglant le réglage = TRUE. 1. Utiliser requis = TRUE pour définir des paramètres facultatifs (tels que --inter) à être requis. S'il n'est pas fourni lors de l'exécution du script, une erreur sera signalée; 2. Les paramètres de position sont requis par défaut, et il n'est pas nécessaire de définir requis = true; 3. Il est recommandé d'utiliser les paramètres de position pour les paramètres nécessaires. Parfois, les paramètres facultatifs de requis = TRUE sont utilisés pour maintenir la flexibilité; 4. Required = true est le moyen le plus direct de contrôler les paramètres. Après utilisation, l'utilisateur doit fournir des paramètres correspondants lors de l'appel du script, sinon le programme invitera une erreur et quittera.

Comment utiliser les paramètres de demande en Java avec Spring Boot Comment utiliser les paramètres de demande en Java avec Spring Boot Aug 11, 2025 pm 07:51 PM

Dans Springboot, les méthodes de traitement des paramètres de demande incluent: 1. Utilisez @RequestParam pour obtenir des paramètres de requête, qui prend en charge les valeurs requises, facultatives et par défaut; 2. Recevez plusieurs paramètres du même nom via la liste ou le type de carte; 3. Liez plusieurs paramètres à l'objet en combinaison avec @ModeLatTribute; 4. Utilisez @Pathvariable pour extraire des variables dans le chemin d'URL; 5. Utiliser @RequestParam pour traiter les données du formulaire dans la demande post-demande; 6. Utilisez la carte pour recevoir tous les paramètres de demande. La sélection correcte d'annotations peut analyser efficacement les données demandées et améliorer l'efficacité du développement.

Quels sont les commentaires dans Java? Quels sont les commentaires dans Java? Aug 12, 2025 am 08:20 AM

CommentairesInjavaAreignoredBytheCompilerAndUsedforexPlaning, Notes, OrdisablingCode.ThereAreaTheTypes: 1) une seule linecommentStartwith // andLastuntUlLtheendoFtheline; 2) Multi-linecomements Beginwith / AndendWith / andCanspanMultiplelines; 3) documentation sur la documentation avec documentation

The Best Ides for Java Development: une revue comparative The Best Ides for Java Development: une revue comparative Aug 12, 2025 pm 02:55 PM

Thebestjavaidein2024Denpendyourndeds: 1.chooseintellijideaforprofessional, l'entreprise, le development orfulldevelopmentduetoitsSuperiorCodeIntelligence, le framewory

Comment utiliser l'API HTTPClient en Java Comment utiliser l'API HTTPClient en Java Aug 12, 2025 pm 02:27 PM

Le cœur de l'utilisation du javahttpclientapi est de créer un httpclient, de créer un httprequest et de traiter httpResponse. 1. Utilisez httpclient.newhttpclient () ou httpclient.newbuilder () pour configurer les délais d'expiration, proxy, etc. pour créer des clients; 2. Utilisez httpRequest.newBuilder () pour définir URI, méthode, en-tête et corps pour construire des demandes; 3. Envoyez des demandes synchrones via client.send () ou envoyez des demandes asynchrones via client.sendaSync (); 4. Utilisez des handleurs.

Edge ne sauvant pas l'histoire Edge ne sauvant pas l'histoire Aug 12, 2025 pm 05:20 PM

Tout d'abord, Checkif "ClearbrowsingDataOnClose" IsTurneDOninsettingsandTurnitofftoenSureHistoryissaved.2.Confirmyou'renotusingInprivateMode, asitdoesNotsAvehistoryByDesigr.3.Disable ExtensionStendatoryToUleoutHeleft

See all articles