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') 
  • Python spöttische globale Variable
  • Wiederholungscode in unbescheidenem Testfall
  • Wie kann man die Verbosität in python unittest erhöhen?
  • Wie kann ich einen Redis-Client in Python verspotten?
  • Prüfen Sie, ob eine Funktion eine Warnung mit Nasentests auslöst
  • Testen eines Python-API-Clients
  • Speziell benannte Verzeichnisse mit Nosetests
  • Verwalten von Protokollen / Warnungen in Python-Erweiterungen
  • Python ist die beste Programmiersprache der Welt.