是否有任何理由为什么鼻子将无法找到测试在Ubuntu 9.04?
我用鼻子0.11.1与蟒蛇2.5.4。
我可以运行测试,只有当我明确指定的文件名。 如果我不指定它只是说,0测试的文件名。
同样的项目运行测试在我的Mac很好,所以我很为难!
是否有任何理由为什么鼻子将无法找到测试在Ubuntu 9.04?
我用鼻子0.11.1与蟒蛇2.5.4。
我可以运行测试,只有当我明确指定的文件名。 如果我不指定它只是说,0测试的文件名。
同样的项目运行测试在我的Mac很好,所以我很为难!
有些什么关系,如果你正在运行测试过的目录即
nosetests ... tests/
其中,测试是我的测试文件夹的名称,并有单独的Python测试功能在的.py模块之一...您的功能必须要以“测试”为nosetests认识到,只要你想运行测试。
例如:
def test_something():
...
当此目录而在执行nosetests将运行该功能
def somethin_to_test():
...
不会。
它总是让我有其他的事情, nose
是它不会运行可执行文件的测试。 我不知道是什么原因,这将使整个的Mac / Ubuntu的差异,但它是值得一试。
确保脚本没有某种方式得到chmod +x
“在Mac上D和如果他们这么做,以解决他们chmod -x $(find tests/ -name '*.py')
此行为是几乎可以肯定,因为你的文件不符合鼻子的测试匹配的行为而得名。 从鼻子文档 :
鼻子从Python源文件,目录和包装在其工作目录中自动收集测试(默认为当前工作目录)。 该testMatch正则表达式匹配任何蟒源文件,目录或包(默认情况下:(?:^ | [B _.-])[Tt的] EST)将被收集作为测试 (或源的测试集合)。
重点是我的。
一些示例的名字,将匹配:
看起来像它会匹配,但实际上是一个名不:
如果你只是重命名文件,你应该是好去。
__init__.py
文件?
...确保您的“测试”目录实际上是模块(他们有一个空的
__init__.py
文件)。
我有同样的问题。 我测试在Windows中运行得很好,但不是在Ubuntu。
在Ubuntu中,如果运行:
nosetests -vv --collect-only
您可能会看到它跳过你的测试文件,因为它是一个可执行文件:_Tools / LintControlFiles / test_HgLint.py 是可执行的; 跳过
为了让鼻子考虑可执行文件,运行它,就像这样:
nosetests --exe
我可以证实,作为@大卫- wolever说,他们无法执行的Ubuntu上。 跑
nosetests -vv --collect-only
看到哪些文件进行了检查全部细节。
使用-all-modules
,它会发现所有的测试。
nosetests --all-modules ./tests
通过鼻子的来源看后,特别是selector.py文件,如果你看看发生了什么,
https://github.com/nose-devs/nose/blob/master/nose/selector.py#L129
检查时,如果我们wantFile
, self.matches
被调用,然后做一个regex
对搜索match
,这就是你会传过来testMatch
。
出现此问题时,您再检查后下楼(和整个该文件),
https://github.com/nose-devs/nose/blob/master/nose/selector.py#L152
它再次运行非常相同类型的检查,对wantFunction
。
这意味着,如果你有你的包,你的容器pyfile,和你的实际测试类/函数的结构不同,你必须创建一个疯狂的复杂的正则表达式匹配,在每一个阶段。
对我来说,当我得知这一点,我选择了我的前缀包装,容器和测试功能与公共位,即
setests ├── __init__.py ├── setest_area1.py └──── def setest_someblock(): ...
然后我的nose
命令的工作原理是,
nose --testMatch="setest"
这就筛选我希望它的工作方式。