在多个文件中进行测试

时间:2012-08-27 16:17:39

标签: python testing pyramid

我正在为大型项目使用金字塔框架,我发现将所有测试都放在一个tests.py文件中会很麻烦。所以我决定创建包含我的测试文件的目录。问题是,我不知道如何告诉金字塔,从这个目录运行我的测试。

我正在使用python setup.py test -q运行测试。

但是当我将测试移动到tests目录后,这当然不起作用。该怎么做才能让它发挥作用?

3 个答案:

答案 0 :(得分:5)

首先,您需要确保tests不仅仅是一个目录,而是通过在其中创建__init__.py来创建Python包。

您还需要确保在teststest_something.py中为模块命名。

作为测试发现的一部分,大多数测试运行器会查找名为tests的模块或包,该包中的模块以test_开头,并期望测试方法的方法名称(在{{1 }}子类)以TestCase开头。

unittest模块将测试运行者描述为:

  

测试运行器是编排测试执行的组件   并向用户提供结果。跑步者可以使用图形   接口,文本界面,或返回一个特殊值来表示   执行测试的结果。

有许多不同的测试框架,因此有测试运行器,大多数以某种方式扩展test_并寻找unittest子类。他们可以使用不同类型的test discovery,以不同的方式显示结果,或者在运行测试时收集code coverage

至于相对进口:你应该尽量避免这些。它们使代码更难移动(正如您刚才注意到的那样)并降低了导入的可读性(从哪里导入代码?)。只需使用unittest.TestCase - 事情就更清楚了

答案 1 :(得分:1)

我终于找到了做到这一点的方法。我刚刚创建了名为tests的目录,将我的测试放入其中并创建了空文件__init__.py。我需要修复相对导入,否则会出现奇怪的错误:

AttributeError: 'module' object has no attribute 'tests'

我真的不明白发生了什么,这里的nosetest角色是什么,但它有效。

如果有人能够更深入地解释这个问题,那就太好了。

答案 2 :(得分:0)

尝试使用nose
http://nose.readthedocs.org/en/latest/
如果您的所有测试文件都以"测试"开头,nosetests应该全部选择它们并运行它们。