[英]Combine asserts in python
我有一個這樣的測試用例:
class TokenGeneratorTestCase(unittest.TestCase):
def test_genToken(self):
"""
Test if genToken returns a UUID, if not, then -1
"""
tg = TokenGenerator()
result = tg.genToken()
self.assertIn(type(result), [ uuid.UUID, int ])
if type(result) == int:
self.assertEqual(result, -1)
我想測試genToken()是否返回uuid.UUID或-1。 是否可以使用單個assert *來完成?
PS:我是Python和單元測試的新手,所以請原諒我的無知:)
在執行操作時有兩個斷言沒有什么錯(假設您捕獲了AssertionError
:))。 不過,如果您願意,也可以像這樣組合它們:
# You can also use type(result) == uuid.UUID or result == -1
correctness = isinstance(result, uuid.UUID) or (isinstance(result, int) and result == -1)
self.assertTrue(correctness)
您在這里遇到問題-因為無法確定TokenGenerator
是否正常工作。 它總是可以返回-1
,您會很高興測試通過。 您需要在此處創建兩個測試-一個驗證生成器返回-1
,另一個驗證生成器返回uuid.UUID
。 這些測試應該是可重復的,而不是隨機的。 你該怎么做? 您應該能夠從測試中影響令牌生成器中的someCondition
。 也就是說,您應該將某些依賴項傳遞給generator,或者在調用genToken()
之前設置適當的generator狀態。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.