Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
套接字python的单元测试_Python_Sockets - Fatal编程技术网

套接字python的单元测试

套接字python的单元测试,python,sockets,Python,Sockets,有人能帮忙做单元测试吗?我的程序的目标是连接到iKettle。这是我的代码: ip_address = "" port = 2000 def handShake(self, ip_address): s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) try: s.connect((ip_address, self.port)) s.send("HELLOKETTLE") se

有人能帮忙做单元测试吗?我的程序的目标是连接到iKettle。这是我的代码:

ip_address = ""
port = 2000
def handShake(self, ip_address):
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    try:
        s.connect((ip_address, self.port))
        s.send("HELLOKETTLE")
        self.kettleResponse(s)
        s.close()
    except:
        print("error connecting")

在我看来,您需要比使用套接字更高的抽象级别。类似于处理发送和接收响应的实体

然后,您可以对它进行专门化,创建套接字、发送数据、接收响应等,这些都是您在实际场景中使用的

然而,为了获得对单元测试有益的东西,您可以模拟这个实体,使其具有不做任何事情的伪方法,并返回您想要的结果

现在你显然认为,这不是在测试任何东西。你是对的。然而,我不认为您应该单元测试套接字通信,而是处理发送/接收的数据的方法和函数


另一种方法是在所需端口上创建localhost服务器,该端口将使用预先给定的数据进行响应。但这只不过是上述方法,但在创建服务器端、定义协议等方面的开销更大。,所有这些都是为了单元测试。

您的问题是什么?我将如何在此基础上实现单元测试?我将如何对从套接字发送/接收数据的方法进行单元测试?您可以使用Python的单元测试和模拟库。请注意快速指南中的示例。在这里,您可以使用assert_调用_with etc,以确保调用方法。另外,你可以模拟那些方法返回的结果。你介意举个例子吗?表示:result=s.recv2048 printresult