如何使用nosetests分别组织和运行单元测试和功能测试

2024-06-16 13:21:41 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

我目前正在尝试组织我的单元测试和功能测试,这样我可以使用nose分别运行单元测试和功能测试,但也可以选择运行所有测试。测试将位于packageA/test/subpackage1和packageA/test/subpackage2中。在

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

Tags: 文件pytestfoo单元测试功能测试命名vs
3条回答

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

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

我的测试目录结构如下所示:

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

对于每个单独的应用程序,我在单元和集成目录中创建了相应的测试目录。每个is目录都是独立的django项目,具有自定义设置,并且有用于运行测试的管理命令。在

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

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

我会尽量按功能区组织考试。我真的不知道鼻子是什么。在

但是,如果你测试一个网页的登录区域,那么创建一个名为“login”或“loginTests”的子文件夹,并为menu test创建一个“menu”或“menuTests”文件夹。有好的命名约定总是很好的,所以给测试和文件夹起一个确切的名称,就是它们正在测试的内容。尽可能具体。在

相关问题 更多 >