组织Django单元测试

Jas*_*ett 48 django unit-testing

现在我有我的Django单元测试生活在mcif/tests.py.我希望有更多的东西一样mcif/tests/foo_test.py,mcif/tests/bar_test.py等等,但如果我安排我的测试,这样,Django的翻转出来.

有没有办法做我正在尝试做的事情,或者我必须在一个文件中进行所有测试?

Art*_*ler 119

从Django 1.6版开始,测试发现机制发生了变化.您不再需要从中导入所有内容tests/__init__.py,但现在您必须确保包含测试的所有文件都与模式匹配test*.py.

所以,而不是拥有app/tests/models.pyapp/tests/views.py,现在你应该拥有app/tests/test_models.pyapp/tests/test_views.py.

您还可以创建一个名为的文件,app/tests/test.py并从那里包含您的其他文件.问题是跑步者将寻找与模式匹配的文件test*.py并执行它们.

  • +1为Django 1.6.此外,`__init __.py`中的导入不再有效. (12认同)
  • 我需要在`tests /`文件夹中创建一个(空)`__init __.py`文件,以便Pylint不会显示有关它无法解析的视图的错误. (4认同)
  • 还要确保在使用测试包时删除tests.py (3认同)
  • 添加到此.创建测试/文件夹添加__init__.py(无导入)创建tests/tests.py(并将导入放在那里)这样就可以保留每个测试文件的测试前缀.如果那是首选 (2认同)
  • 参考:Django docs https://docs.djangoproject.com/en/1.8/topics/testing/overview/#running-tests (2认同)

dap*_*wit 17

注意:这描述了Django 1.6之前的行为.请参阅Artur Soler对Django 1.6及更高版本的回答.

制作一个包裹: myapp/tests/

在包中,根据需要放置尽可能多的不同测试模块.在__init__.py内部tests,从这些模块导入测试.(或者这个主题的一些变化.)

编辑:哇,没注意到你已经提到了一个tests包.

重要的是从包中获取所有可用内容.Django将从包中获得测试,因此必须能够看到它们__init__.py.

[编辑:添加了关于Django 1.6版的说明]

  • Django 1.6不再有效,请参阅下面的回复. (5认同)