2012-03-21 155 views
3

在我最新的Python項目中,利用Twisted,我試圖善於使用unittest模塊。在很高的層面上,我正在構建兩個專門用於相互交流的RESTful API。對於大多數請求,我可以使用DummyRequest並根據預期的常量測試呈現的值,並且工作正常。扭曲的單元測試客戶端 - 服務器交互

但是,我有一些情況下,設計需要在一臺服務器上的請求(其中包括)然後向其他服務器發送請求,但並不真正關心響應。重要的是請求發生。

就像我說過的,我可以在另一側測試這個功能是否完美,但是我越來越難以確定數據是如何測試的。我的想法而已要麼

  • 設置,只是檢查是否提出請求並驗證輸入的虛擬測試服務器 - 似乎片狀,太多的精力
  • 建立一個裝飾包某些測試並修改urllib.urlopen來報告它何時被調用,我們試圖檢索,並允許我簡單地返回一個已知的結果。

我傾向於第二種選擇,因爲它似乎更pythonic,但也有點hacky。

想法?

+3

你的問題對我來說有點模糊,你已經有了一個一般的答案。但是,'urllib.urlopen'跳到我身上。這是你如何提出你的要求?如果是這樣,你應該改變你的代碼部分。 'urllib.urlopen'是一個阻塞呼叫。改用'twisted.web.client'。 – 2012-03-21 12:18:50

回答

1

Twisted帶有自己的單元測試框架,名爲Trial。正如你可能想象的那樣,它非常適合測試你的網絡代碼。 Here's a tutorial to start you off.

+0

我知道Trial,但它似乎並沒有提供任何出站連接檢查功能。我想我可以再看一看。謝謝! – 2012-03-22 03:10:22

0

我不太瞭解Twisted或您如何設置您的系統,但是您可以在單個線程上啓動兩臺服務器嗎?其中之一就是你正在測試的那個,另一個只是一個可以接受任何請求的假人。除此之外,虛擬機會存儲它已收到呼叫的信息。在第一臺服務器上啓動第二臺服務器的操作後,您可以斷言第二臺服務器已收到請求。