繁体   English   中英

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

[英]django unit testing and global fixtures

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

使用全球设备是否明智?

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

Django Dynamic Fixture可以选择创建全局灯具。 检查其Nose插件Shelve选项

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

只要你在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方法执行此操作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM