关于python:如何测试调用socket.send时是否引发异常

How to test if exception is raised when calling socket.send

本问题已经有最佳答案,请猛点这里访问。

这是我第一次使用模拟测试套接字接口。我有一个类调用了_socket.sendto()方法。我想测试是否引发了异常。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
class socketUDP(object):

    def __init__(self, host="127.0.0.1", port=2003):
        self.host = host
        self.port = port

        self._socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)


    def send(self, metric, value):

        message ="%s %f
"
% (metric, value)

        try:
            self._socket.sendto(
                message, (self.host, self.port))
        except Exception, e:
            # I would like to test if this exception is raised
            print"Could not relay data: %s" % e

更新:我正在为send方法编写一些单元测试,我要做的测试之一是查看是否引发了异常


如果send()方法捕获异常,这将非常困难。你可以尝试Monkey修补socket.send()方法,但这充其量只是个不确定的解决方案。在我看来,在本例中,您测试的是实现细节,而不是接口的一致性,这是一个值得怀疑的策略。

如果send()方法没有捕捉到异常,您可以只使用assertRaises()