2010-04-15 97 views
6

我正在使用python單元測試模塊。我想知道有沒有在每兩個測試用例之間添加一些延遲?因爲我的單元測試只是提出http請求,我猜服務器可能會阻止來自同一個ip的頻繁請求。Python單元測試。如何在測試用例之間添加睡眠時間?

+2

一個測試,取決於一個真正的HTTP服務器並不是大多數人所稱的單元測試。通常對於單元測試來說,你可以模擬服務器的行爲,所以你不需要依賴你需要休眠的地方。 儘管知道如何做這些以編寫集成測試仍然很有用。 – 2010-04-15 19:55:40

回答

11

把睡眠的你TestCase

class ExampleTestCase(unittest.TestCase): 
    def setUp(self): 
     pass 

    def tearDown(self): 
     time.sleep(1) # sleep time in seconds 

tearDown方法這將是TestCase

編輯內的每一個測試後執行內部:添加setUp因爲documentation似乎或許表明您可以沒有一個tearDown,但它不清楚

+0

只是爲了澄清,我在'tearDown'而不是'setUp'中做了這個,因爲它說「之間」,這自動讓我覺得第一個立即運行(在這種情況下不清楚)是可取的。如果第一次測試之前或之後的延遲沒有關係,將其放在'setUp'中並將'tearDown'離開將會很好。 – 2010-04-15 19:44:20

+0

這工作。非常感謝你 – zsong 2010-04-15 19:48:11

1
import time 
time.sleep(2.5) # sleeps for 2.5 seconds 

您可能想考慮使延遲爲x和y之間的隨機值。

+0

你的意思是我必須在每個測試用例之後放置它?是否有任何通用設置可以用來實現相同的功能? – zsong 2010-04-15 19:27:36

+0

很難說沒有看到你的代碼......但你可能會讓所有的測試用例都繼承自一個通用的測試用例,它提供了一個'def setUp(self):'方法來完成'time.sleep'調用。 – ChristopheD 2010-04-15 19:34:32