2015-05-15 39 views
1

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

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 

更新:
我写的发送方法,一些单元测试,我想要做的测试之一是查看是否有异常发生

+1

“测试”,因为在写'send'方法的测试或者“测试”,就像你在'send'中试图找出异常是否被抛出一样?你为什么要捕捉方法内部的错误呢? – user2357112

+0

我正在为send方法编写一些单元测试,我想要做的其中一个测试是查看是否引发异常。 –

回答

1

如果send()方法捕捉异常,这将是相当困难的。你可能会尝试monkey-patching the socket.send() method,但这绝对是一个虚假的解决方案。在我看来,在这种情况下,您正在测试实现细节而不是符合接口,这是一个值得怀疑的策略。

如果send()方法没有发现异常,则可以使用assertRaises()

相关问题