![](/img/trans.png)
[英]django unit testing with fixtures - object matching query does not exist
[英]django unit testing and global fixtures
我正在Django的一個Web項目,我正在使用python unittest框架。 對於每個應用程序,我有一些固定裝置。 這意味着,每個應用程序在燈具中都有一些相同的表格。 我想在應用程序和測試用例之間共享裝置,否則如果我更改模型,我將不得不更改所有引用此具體表的json裝置。
使用全球設備是否明智?
不要使用靜態夾具,這是一個糟糕的自動化測試模式。 使用動態燈具。
Django Dynamic Fixture可以選擇創建全局燈具。 檢查其Nose插件或Shelve選項 。
我強烈建議調查Django的測試架構 。 特別檢查TestCase.fixtures; 這比單元測試更先進,特定於Django。
只要你在tearDown
方法中刪除它們(或teardown_test_environment
方法 - 見下文),我就不會想到使用全局燈具有什么問題。
我不確定你是否要求了解如何做到這一點。 如果是這樣,我可以想到兩種方式。
為所有測試使用公共基類。 像這樣的東西:
class TestBase(django.test.TestCase): fixtures = ['common_fixtures.xml'] class MyTestClass(TestBase): fixtures = TestBase.fixtures + ['fixtures_for_this_test.xml'] def test_foo(self): # test stuff
使用自定義測試運行器。 在測試運行器中,在運行測試之前加載所需的所有夾具,並在執行測試后將其取下。 您最好使用自己的setup_
和teardown_test_environment
方法執行此操作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.