我正在使用Django的web项目,我正在使用python unittest框架。对于每个应用程序,我有一些固定装置。这意味着,每个应用程序在灯具中都有一些相同的表格。我想在应用程序和测试用例之间共享装置,否则如果我更改模型,我将不得不更改所有引用此具体表的json装置。
使用全球装置是否明智?
答案 0 :(得分:2)
不要使用静态夹具,这是一个糟糕的自动化测试模式。使用动态装置。
Django Dynamic Fixture有创建全局灯具的选项。检查其Nose plugin或Shelve option。
答案 1 :(得分:1)
我强烈建议调查Django的Testing architecture。特别检查TestCase.fixtures;这比单元测试更先进,特定于Django。
答案 2 :(得分:1)
只要您使用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
方法执行此操作。