Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用测试分别组织和运行单元测试和功能测试_Python_Unit Testing_Functional Testing_Nose_Nosetests - Fatal编程技术网

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

Python 如何使用测试分别组织和运行单元测试和功能测试,python,unit-testing,functional-testing,nose,nosetests,Python,Unit Testing,Functional Testing,Nose,Nosetests,我有以下典型的python项目文件结构 packageA +----subpackage1 +----classa.py +----subpackage2 +----classb.py +----test +----subpackage1 +----classa_test.py +----subpackage2

我有以下典型的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单元/)?通过测试类的命名约定(ClassATest与classaffunctionaltest)?或者通过测试方法的命名约定(classa\u foo\u测试与classa\u bar\u功能测试)
  • 有人能解释一下鼻测试的正则表达式匹配是如何工作的吗?选项-m、-i和-e似乎不像我预期的那样运行。正则表达式是否匹配目录(子包1)、文件(classa_测试)或测试类(ClassATest)或测试方法(classa_foo_测试)?我非常困惑

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


但是,如果您例如测试一个网页的登录区域,则创建一个名为“login”或“loginTests”的子文件夹,并为菜单测试创建一个“menu”或“menuTests”文件夹。拥有良好的命名约定总是很好的,因此测试和文件夹的名称应与测试内容完全一致。尽可能具体。

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

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-testing:)

如果您正在开发django项目,可以尝试以下库:bob


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

+1我以前没有见过Uncleb,但它似乎是鼓励良好测试实践的一种非常好的方法(我特别喜欢“如果只运行单元测试,那么Uncleb就不会设置测试数据库”),你说“每个is目录都是单独的django项目,具有自定义设置,并且有用于运行测试的管理命令”,但你的树实际上并没有显示这一点。另外,您使用的自定义管理命令是什么?@supervaco我没有说自定义管理命令,而是带有自定义设置的管理命令。django sane testing通过
manage.py test
命令运行测试(在设置中进行一些修改,包装到
run_Tests.py
,请参阅DST文档-)