簡體   English   中英

使用assertRaises的Django測試未能意識到引發的異常是預期的異常

[英]Django testing with assertRaises fails to realise that exception raised is the one expected

我有以下測試代碼片段

with self.assertRaises(models.NotEnoughInventorySpace):
    self.inv2.add_item(self.item2, 1)

測試失敗:

Creating test database for alias 'default'...
E.
======================================================================
ERROR: test_limited_inventory (wotw_project.game.tests.TestInventory)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "D:\...\wotw\wotw_project\..\wotw_project\game\tests.py", line 34, in test_limited_inventory
    self.inv2.add_item(self.item2, 1)
  File "D:\...\wotw\wotw_project\..\wotw_project\game\models.py", line 460, in add_item
    raise NotEnoughInventorySpace(self)
NotEnoughInventorySpace: There is not enough space in the inventory 'Inventory: 2'

----------------------------------------------------------------------
Ran 2 tests in 0.015s

FAILED (errors=1)
Destroying test database for alias 'default'...
Finished "D:\...\wotw\wotw_project\manage.py test game" execution.

我不明白為什么引發的異常與我傳遞給assertRaises

我使用運行代碼manage.py test game與使用tests.py文件旁邊,我的models.py文件wotw_project.game

我對這個問題的研究表明,導入可能存在問題(即文件與導入的同一文件不同)。 但是我使用標准方法來運行單元測試,所以我不明白為什么這僅對我來說是個問題,肯定其他人在Django中使用assertRaises!

問題不assertRaises ,問題在於您的異常類在產品代碼中的導入與測試代碼中的導入不同。

仔細檢查您的進口。 在兩種情況下,請確保名稱是從同一模塊導入的。 通常在Django項目中,可以通過不同的名稱導入同一模塊,例如,因為可以從Python路徑中的兩個條目訪問該目錄。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM