Spott eine Steckdose in Python

Ich versuche, Unit-Tests für eine Klasse in Python zu schreiben. Die Klasse öffnet eine tcp-Steckdose auf init . Ich versuche, das zu verspotten, damit ich behaupten kann, dass die Verbindung mit den richtigen Werten aufgerufen wird, aber offensichtlich nicht tatsächlich in Unit-Tests passiert ist. Ich habe müde MagicMock, Patch, etc, aber ich habe keine Lösung gefunden.

Meine Klasse sieht so weit so aus

import socket class MyClass(object): def __init__(self): self.tcp_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) self.tcp_socket.connect('0.0.0.0', '6767') 

One Solution collect form web for “Spott eine Steckdose in Python”

Wenn du nur behaupten willst, dass die connect korrekt aufgerufen wird, dann ist es einfach

 import mock import socket class MyClass(object): def __init__(self): self.tcp_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) self.tcp_socket.connect('0.0.0.0', '6767') with mock.patch('socket.socket'): c = MyClass() c.tcp_socket.connect.assert_called_with('0.0.0.0', '6767') 

Wenn du zuerst ein Modul importieren musst, um auf MyClass zuzugreifen, musst du den Patch etwas anpassen:

 from mymodule import MyClass import mock with mock.patch('mymodule.socket.socket'): c = MyClass() c.tcp_socket.connect.assert_called_with('0.0.0.0', '6767') 
  • Tkinter's event_generate Befehl ignoriert
  • Eine Liste aller Module im aktuellen Paket erhalten
  • Python spöttische Drittanbieter-Module
  • Mit selbst in python @ patch dekorateur
  • AttributeError: <module '__main__' von [..] hat nicht das Attribut 'open'
  • Testen auf Nebenwirkungen in Python
  • Speziell benannte Verzeichnisse mit Nosetests
  • Kann das Python-Coverage-Modul die Zeilen in einem Unit-Test bedingt ignorieren?
  • Bei der Verwendung von unittest.mock.patch, warum ist autospec nicht true standardmäßig?
  • Einstellung pycharm laufen django unittest
  • Wie überschreibt man ein Zeitstempelfeld für Unit-Testzwecke?
  • Python ist die beste Programmiersprache der Welt.