即使是一个简单的Python模块,最常见的目录结构似乎也是将单元测试分成各自的test目录:
new_project/
antigravity/
antigravity.py
test/
test_antigravity.py
setup.py
etc.
例如,请参见此Python项目howto。
我的问题是,实际上运行测试的通常方法是什么?我怀疑这对除我以外的所有人来说都是显而易见的,但是你不能仅从python test_antigravity.pytest
目录运行,import antigravity
因为模块不在路径上,它将失败。
我知道我可以修改PYTHONPATH和其他与搜索路径有关的技巧,但我不敢相信这是最简单的方法-如果你是开发人员,那很好,但如果用户只是想检查测试结果,就不能期望用户使用通过。
另一种选择是将测试文件复制到另一个目录中,但是似乎有点愚蠢,并且错过了将它们放在一个单独目录中的意义。
那么,如果你刚刚将源代码下载到我的新项目中,将如何运行单元测试?我希望有一个答案可以对用户说:“要运行单元测试,请执行X
。”
我认为最好的解决方案是使用unittest
命令行界面,该界面会将目录添加到,sys.path
因此你不必(在TestLoader
类中完成)。
例如,对于这样的目录结构:
new_project
├── antigravity.py
└── test_antigravity.py
你可以运行:
$ cd new_project
$ python -m unittest test_antigravity
对于像你这样的目录结构:
new_project
├── antigravity
│ ├── __init__.py # make it a package
│ └── antigravity.py
└── test
├── __init__.py # also make test a package
└── test_antigravity.py
在test包内的测试模块中,你可以antigravity照常导入包及其模块:
# import the package
import antigravity
# import the antigravity module
from antigravity import antigravity
# or an object inside the antigravity module
from antigravity.antigravity import my_object
运行一个测试模块:
要运行单个测试模块,在这种情况下test_antigravity.py:
$ cd new_project
$ python -m unittest test.test_antigravity
只需以导入模块的相同方式引用测试模块即可。
运行单个测试用例或测试方法:
你也可以运行一个TestCase或一个测试方法:
$ python -m unittest test.test_antigravity.GravityTestCase
$ python -m unittest test.test_antigravity.GravityTestCase.test_method
运行所有测试:
你还可以使用测试发现,它将为你发现并运行所有测试,它们必须是命名为模块或包的模块test*.py(可以通过-p
, –pattern
标记进行更改):
$ cd new_project
$ python -m unittest discover
这将运行包中的所有test*.py
模块test
。
问题内容: 即使是一个简单的Python模块,最常见的目录结构似乎也是将单元测试分成各自的目录: 例如,请参阅此Python项目howto。 我的问题是 ,实际上运行测试的通常方法 是 什么? 我怀疑这对除我以外的所有人来说都是显而易见的,但是您不能仅从test目录运行,因为模块不在路径上,它将失败。 我知道我可以修改PYTHONPATH和其他与搜索路径有关的技巧,但是我不相信这是最简单的方法-
本文向大家介绍meteor 经典目录结构,包括了meteor 经典目录结构的使用技巧和注意事项,需要的朋友参考一下 示例 构建应用程序时,您需要了解的第一件事是,Meteor工具具有一些使用特定逻辑进行硬编码的目录。在非常基本的级别上,以下目录被“烘焙”到Meteor捆绑程序中。 参考页面:《流星指南》>“特殊目录”
问题内容: 对于整个MV *客户端框架的狂热,我还是一个新手。它不一定是AngularJS,但我选择它是因为它对我来说比淘汰赛,Ember或Backbone更自然。无论如何,工作流程是怎样的?人们是否开始使用AngularJS开发客户端应用程序,然后将其连接到后端? 还是相反,首先在Django,Flask,Rails中构建后端,然后将AngularJS应用附加到该后端?是否有“正确”的方式来做,
在树结构的目录系统中,任何目录条目都可以是文件或子目录。 树结构的目录系统克服了两级目录系统的缺点。 现在可以将类似的文件分组到一个目录中。 每个用户都有自己的目录,并且不能进入其他用户的目录。 但是,用户有权读取根数据,但他不能写入或修改此数据。 只有系统管理员才能完全访问根目录。 在这个目录结构中搜索更有效率。 使用当前工作目录的概念。 一个文件可以通过两种类型的路径访问,无论是相对的还是绝对
问题内容: 我需要能够通过在Linux shell中键入一行来运行当前目录中的所有测试。在某些目录中,这可以正常工作。但是在其他情况下,当我键入“ nosetests”时,则不会运行任何测试。如果我分别要求进行测试,则将运行这些测试,但我需要它们全部自动运行。这是不起作用的目录之一: 当我在父目录中运行“ nosetests”时,将运行某个子目录中的所有测试,但不会运行/ extwebserver
问题内容: 我有一个用Rails编写的应用程序。为了对其进行测试,我构建了一个docker映像。一切正常。 但是,当我配置Jenkins运行这些测试时,就会出现问题。在构建步骤中,我要做的是: 其中rspec是在docker-compose.yml上定义的服务,其中包含以下命令: 当rspec返回错误时,构建仍然成功。这里是输出示例: 返回1,构建仍然成功。 如果我通过docker通过其ID检查容