即使是一个简单的Python模块,最常见的目录结构似乎也是将单元测试分成各自的test
目录:
new_project/
antigravity/
antigravity.py
test/
test_antigravity.py
setup.py
etc.
例如,请参阅此Python项目howto。
我的问题是 ,实际上运行测试的通常方法 是 什么? 我怀疑这对除我以外的所有人来说都是显而易见的,但是您不能仅从python test_antigravity.py
test目录运行,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
$ # Also works without discover for Python 3
$ # as suggested by @Burrito in the comments
$ python -m unittest
这将运行包中的所有test*.py
模块test
。
问题内容: 即使是一个简单的Python模块,最常见的目录结构似乎也是将单元测试分成各自的test目录: 例如,请参见此Python项目howto。 我的问题是,实际上运行测试的通常方法是什么?我怀疑这对除我以外的所有人来说都是显而易见的,但是你不能仅从目录运行,因为模块不在路径上,它将失败。 我知道我可以修改PYTHONPATH和其他与搜索路径有关的技巧,但我不敢相信这是最简单的方法-如果你是开
本文向大家介绍meteor 经典目录结构,包括了meteor 经典目录结构的使用技巧和注意事项,需要的朋友参考一下 示例 构建应用程序时,您需要了解的第一件事是,Meteor工具具有一些使用特定逻辑进行硬编码的目录。在非常基本的级别上,以下目录被“烘焙”到Meteor捆绑程序中。 参考页面:《流星指南》>“特殊目录”
在树结构的目录系统中,任何目录条目都可以是文件或子目录。 树结构的目录系统克服了两级目录系统的缺点。 现在可以将类似的文件分组到一个目录中。 每个用户都有自己的目录,并且不能进入其他用户的目录。 但是,用户有权读取根数据,但他不能写入或修改此数据。 只有系统管理员才能完全访问根目录。 在这个目录结构中搜索更有效率。 使用当前工作目录的概念。 一个文件可以通过两种类型的路径访问,无论是相对的还是绝对
问题内容: 我需要能够通过在Linux shell中键入一行来运行当前目录中的所有测试。在某些目录中,这可以正常工作。但是在其他情况下,当我键入“ nosetests”时,则不会运行任何测试。如果我分别要求进行测试,则将运行这些测试,但我需要它们全部自动运行。这是不起作用的目录之一: 当我在父目录中运行“ nosetests”时,将运行某个子目录中的所有测试,但不会运行/ extwebserver
问题内容: 我有一个用Rails编写的应用程序。为了对其进行测试,我构建了一个docker映像。一切正常。 但是,当我配置Jenkins运行这些测试时,就会出现问题。在构建步骤中,我要做的是: 其中rspec是在docker-compose.yml上定义的服务,其中包含以下命令: 当rspec返回错误时,构建仍然成功。这里是输出示例: 返回1,构建仍然成功。 如果我通过docker通过其ID检查容
主要内容:什么是目录?什么是目录? 目录可以被定义为磁盘上相关文件的列表。 该目录可以存储一些或整个文件属性。 为了在不同的操作系统上获得不同文件系统的好处,可将硬盘划分为不同大小的分区数。 分区也称为卷或小型磁盘。 每个分区必须至少有一个目录,其中可以列出分区的所有文件。 为目录中的每个文件维护一个目录条目,该目录存储与该文件相关的所有信息。 一个目录可以被视为一个文件,其中包含一堆文件的元数据。每个目录都支持文件上