10

我有以下典型的python项目文件结构

packageA
   +----subpackage1
            +----classa.py
   +----subpackage2
            +----classb.py
   +----test
          +----subpackage1
                    +----classa_test.py 
          +----subpackage2
                    +----classb_test.py

我目前正在尝试组织我的单元测试和功能测试,以便我可以使用鼻子单独运行单元测试和功能测试,但也可以选择运行所有测试。测试将存在于 packageA/test/subpackage1 和 packageA/test/subpackage2 中。

  • 组织不同测试的好方法是什么?按文件夹(功能/与单元/)?通过测试类的命名约定(ClassATest vs ClassAFunctionalTest)?还是通过测试方法的命名约定(classa_foo_test vs classa_bar_functional_test)?
  • 有人可以解释nosetests 的正则表达式匹配是如何工作的吗?选项 -m、-i 和 -e 似乎没有像我预期的那样运行。正则表达式是否匹配目录 (subpackage1)、文件 (classa_test) 或测试类 (ClassATest) 或测试方法 (classa_foo_test)?我非常困惑
4

3 回答 3

8

我的测试目录结构是这样的:

root
  + --- tests
  |       + --- unit_tests
  |       |         + --- some_app_tests   
  |       |         + --- another_app_tests
  |       |         | run_tests.py
  |       |
  |       + --- integrate_tests 
  |                 + --- some_app_tests
  |                 + --- another_app_tests
  |                 | run_tests.py
  |       
  + --- project_root
          + --- some_app
          + --- another_app

对于每个单独的应用程序,我在 unit- 和 integration- 目录中创建带有测试的对应目录。每个目录都是具有自定义设置的单独 django 项目,并且有用于运行测试的管理命令。

将测试放在一个目录中还有一个很好的优势 - 部署项目时,没有理由使用它来部署测试。所以我只删除一个目录,仅此而已。

(运行测试我使用 django-sane-testing:https ://github.com/Almad/django-sane-testing )

于 2011-11-07T22:53:03.260 回答
1

如果你正在开发 Django 项目,你可以试试这个库:unclebob https://github.com/gabrielfalcao/unclebob

它提出了一种如何组织和运行单元测试和功能测试的方法。

于 2012-01-27T13:13:17.040 回答
-2

我会尝试按功能区域组织测试。我真的不知道鼻子是什么。

但是,例如,如果您测试网页的登录区域,则创建一个名为“login”或“loginTests”的子文件夹,并为菜单测试创建一个“menu”或“menuTests”文件夹。拥有良好的命名约定总是好的,因此将测试和文件夹准确命名为它们正在测试的名称。尽可能具体。

于 2011-11-07T22:37:03.183 回答