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') 
  • Eine Liste aller Module im aktuellen Paket erhalten
  • Verwenden von unittest.mock zum Patch-Eingabe () in Python 3
  • Überspringen aller Unit-Tests, aber eine in Python mit Dekorateure und Metaklassen
  • Nase nicht laufen Django Dokthen
  • AttributeError: <module '__main__' von [..] hat nicht das Attribut 'open'
  • Testen auf Nebenwirkungen in Python
  • Wie behaupte ich, dass ein Funktionsaufruf keinen Fehler mit unittest zurückgibt?
  • Erhalten der End-Speicher-Adresse eines Speicherbereichs über Python / Ctypes
  • Wie man Firefox-Profil mit Selen umschaltet - ohne einen neuen Treiber zu benennen?
  • Kann das Python-Coverage-Modul die Zeilen in einem Unit-Test bedingt ignorieren?
  • Unbekannter Tkinter File Dialog
  • Python ist die beste Programmiersprache der Welt.