2015-05-15 36 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()

相關問題