[英]Testing with Unittest Python
我正在使用Python Unittest進行runninig測試。 我正在運行測試,但是我想進行否定測試,我想測試一個函數拋出異常是否可以通過,但是如果沒有異常拋出則測試失敗了。 我的腳本是:
try:
result = self.client.service.GetStreamUri(self.stream, self.token)
self.assertFalse
except suds.WebFault, e:
self.assertTrue
else:
self.assertTrue
即使函數正常運行,此傳遞也始終為True。 我還嘗試了其他各種方法,包括:
try:
result = self.client.service.GetStreamUri(self.stream, self.token)
self.assertFalse
except suds.WebFault, e:
self.assertTrue
except Exception, e:
self.assertTrue
有沒有人有什么建議?
謝謝
我嘗試過assertRaises卻沒有運氣。
try:
result = self.client.service.GetStreamUri(self.stream, self.token)
self.assertRaises(WebFault)
except suds.WebFault, e:
self.assertFalse
except Exception, e:
self.assertTrue
它仍然通過。 由於某種原因,它不會嘗試執行assertRaises
語句。 我也嘗試過:(該功能應該失敗,但測試應該通過)
try:
result = self.client.service.GetStreamUri(self.stream, self.token)
except suds.WebFault, e:
self.assertFalse
except Exception, e:
self.assertTrue
else:
self.assertFalse
由於某種原因,即使函數通過,它也不會引發錯誤。 無論異常如何,總是如此。 除非有其他聲明,否則它將繼續執行。
找到了一種行之有效的方法,但似乎做事卻很糟糕:
有人可以建議一種更清潔的方式嗎?
try:
result = self.client.service.GetStreamUri(self.stream, self.token)
except suds.WebFault, e:
self.assertFalse
except Exception, e:
pass
try:
result==result
except:
result=None
if result==None:
assert True
else:
assert False
TestCase.assertRaises是您所需要的,但是在您的示例中,您似乎在稍微濫用它。 您需要類似:
def test_GetStreamUri(self):
self.assertRaises(WebFault, self.client.service.GetStreamUri)
result = self.client.service.GetStreamUri(self.stream, self.token)
您需要在調用可調用對象之前告訴unittest
有關可調用對象的信息,它將引發異常。
您是否嘗試過assertRaises
?
出色的鼻子單元測試提供了@raises裝飾器 :
@raises(TypeError)
def test_raises_type_error():
raise TypeError("This test passes")
您可能應該調用self.assertTrue(True)
和self.assertFalse(True)
,因為您現在還沒有真正調用函數,只是引用了它們。 不過,必須有一種更清潔的方法來執行此操作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.