2009-11-02 62 views
2

我對使用Corba與服務器進行通信的單元測試代碼的意見感興趣。Python中的單元測試Corba

你會嘲笑Corba物體嗎?在Python中,這是一種痛苦的屁股,因爲Corba對象的所有方法都是動態加載的。所以你基本上堅持「嘲笑任何事情」。

謝謝!

注: 我相信我說得不很清楚,所以我會盡力給一個較爲具體的例子:

的Web應用程序需要顯示包含從服務器接收數據的頁面。它通過調用server_pagetable.getData()來獲取數據,然後格式化數據,將它們轉換爲正確的python類型(因爲Corba沒有例如日期類型等),並最終創建要顯示的HTML代碼。

這就是我想測試的方法 - 接收數據並完成所有轉換並最終創建HTML代碼的方法。

我相信最直接的決定是嘲笑Corba對象,因爲它們基本上包含網絡和數據庫功能(不應在單元測試中測試)。

這只是做了很多「額外工作」 - 嘲笑所有Corba對象(有一個User對象,一個服務器會話對象,可分頁對象,一個管理對象等)。也許這只是因爲我被Corba困住了,因此我必須通過mock來反映服務器指定的對象層次。另一方面,這可能是有一些很酷的優雅的解決方案,使用Corba測試代碼,這只是沒有跨越我的想法。

回答

3

不要嘗試單元測試Corba。假定Corba有效。 Unittest 您自己的代碼。這意味着:

  1. 創建一個單元測試,檢查您是否正確設置了Corba並且可以調用單個方法並讀取屬性。如果可行,所有其他方法和屬性也將起作用。

  2. 之後,測試所有暴露的對象是否正常工作。你不需要Corba。

+0

是的,但不時(在我的情況下實際上很常見),你只需要測試一些直接使用Corba的功能。在我的情況下,服務器使用Corba與客戶端通信,所以如果我想測試例如我的包裝Corba界面的對象工作正常,我不得不以某種方式在測試中包含Corba。 (免責聲明:這不是我的設計,只是我繼承並必須與之合作。:-)) – 2009-12-15 14:00:06

+0

更改這方面的設計。也不要測試Corba編譯器(除非你遇到錯誤並且需要知道如何/是否有效)。確保你的代碼設置了正確的參數。下一步是獲取服務器的源代碼,並用單元測試測試它的代碼。但避免往返(儘可能)。免責聲明:現實節拍紙。 – 2009-12-15 14:53:29

1

我會設置一個測試服務器,並對其進行實時測試。單元測試對於網絡材料可能會很棘手,所以最好儘可能保持真實。任何模擬都會在測試服務器上完成,例如,如果您需要與三臺不同的服務器通信,則可以使用三個不同的IP地址來設置所有三臺服務器的角色。