django单元测试和全球固定装置

时间:2009-08-13 08:00:21

标签: python django unit-testing

我正在使用Django的web项目,我正在使用python unittest框架。对于每个应用程序,我有一些固定装置。这意味着,每个应用程序在灯具中都有一些相同的表格。我想在应用程序和测试用例之间共享装置,否则如果我更改模型,我将不得不更改所有引用此具体表的json装置。

使用全球装置是否明智?

3 个答案:

答案 0 :(得分:2)

不要使用静态夹具,这是一个糟糕的自动化测试模式。使用动态装置。

Django Dynamic Fixture有创建全局灯具的选项。检查其Nose pluginShelve option

答案 1 :(得分:1)

我强烈建议调查Django的Testing architecture。特别检查TestCase.fixtures;这比单元测试更先进,特定于Django。

答案 2 :(得分:1)

只要您使用tearDown方法(或teardown_test_environment方法 - 请参见下文)删除全局灯具,我就无法想到使用全局灯具有什么问题。

我不确定您是否要求了解如何执行此操作。如果是这样,我可以想到两种方式。

  1. 为所有测试使用通用基类。像这样:

    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
    
  2. 使用自定义测试运行器。在测试运行器中,在运行测试之前加载所需的所有夹具,并在执​​行测试后将其取下。您最好使用自己的setup_teardown_test_environment方法执行此操作。