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

时间:2015-05-15 18:22:09

标签: python unit-testing exception

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

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\n" % (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方法编写一些单元测试,我想做的其中一个测试是查看是否引发了异常

1 个答案:

答案 0 :(得分:1)

如果tar方法捕获异常,这将非常困难。您可以尝试monkey-patching the socket.send() method,但这是最好的解决方案。在我看来,在这种情况下,您需要测试实现细节而不是对接口的一致性,这是一个值得怀疑的策略。

如果send()方法未捕获异常,则可以使用assertRaises()