Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/342.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_Testing_Pyramid - Fatal编程技术网

Python 在多个文件中进行测试

Python 在多个文件中进行测试,python,testing,pyramid,Python,Testing,Pyramid,我正在为大型项目使用金字塔框架,我发现将所有测试放在一个tests.py文件中很麻烦。所以我决定创建一个包含测试文件的目录。问题是,我不知道如何告诉金字塔从这个目录运行我的测试 我正在使用python setup.py test-q运行测试 但在我将测试移到tests目录之后,这当然不起作用。怎么做才能让它工作?尝试使用鼻子 如果您的所有测试文件都以“test”开头,nosetests应该将它们全部提取并运行。我终于找到了这样做的方法。我刚刚创建了名为tests的目录,将我的测试放在其中,并创

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

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


但在我将测试移到tests目录之后,这当然不起作用。怎么做才能让它工作?

尝试使用
鼻子



如果您的所有测试文件都以“test”开头,
nosetests
应该将它们全部提取并运行。

我终于找到了这样做的方法。我刚刚创建了名为tests的目录,将我的测试放在其中,并创建了一个空文件
\uuuinit\uuuuu.py
。我需要修复相对导入,否则会产生奇怪的错误,如:

AttributeError:“模块”对象没有属性“测试”

我真的不明白发生了什么,以及这里的
nosetest
角色是什么,但它起作用了


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

首先,您需要确保
tests
不仅仅是一个目录,而是一个Python包,方法是在其中创建
\uu init\uuuuuuuuuu.py

您还需要确保在
测试中命名模块
test\u something.py

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

本模块将测试跑步者描述为:

测试运行程序是协调测试执行的组件 并向用户提供结果。跑步者可以使用图形工具 接口,文本接口,或返回特殊值以指示 执行测试的结果

有很多不同的测试框架,因此测试运行者都在那里,大多数以某种方式扩展
unittest
,并寻找
unittest.TestCase
子类。他们可以进行不同类型的测试,以不同的方式显示结果,或者在测试运行时收集结果


至于相对进口:你真的应该尽量避免这些。它们使代码的移动变得更加困难(正如您刚才注意到的),并降低了导入的可读性(从何处导入代码?)。只需使用myproject.views导入my_视图
——它的位置更清晰

很好,因此您甚至不必安装它。只需确保您的测试位于一个文件夹中,并且它们的文件名以“test”开头,然后转到该目录并运行测试。我在搜索您发布的AttributeError的修复程序时偶然发现了这一点。对于搜索此问题的任何其他人,当我将所有相对导入更改为绝对导入(例如从.models import Base更改为从projectname.models import Base)时,问题已得到解决