鼻子无法在ubuntu中找到测试

Sud*_*han 52 python nose

是否有任何理由为什么Nose无法在Ubuntu 9.04中找到测试?

我正在使用带有python 2.5.4的鼻子0.11.1.
我只有在明确指定文件名时才能运行测试.如果我没有指定它只是说的文件名,0测试.

同样的项目在我的Mac上运行测试很好,所以我很难过!

Dav*_*ver 105

总是让我感到困惑的另一件事nose是它不会在可执行文件中运行测试.我不确定为什么这会在Mac/Ubuntu上有所作为,但它值得一试.

确保脚本没有以某种方式chmod +x在Mac上获得...如果他们这样做,请修复它们chmod -x $(find tests/ -name '*.py').

  • 查看代码告诉我,在Windows和IronPython上跳过*可执行文件除了*.我有这个问题,并使用--exe为我工作. (9认同)
  • 谢谢!这已经困扰了我好几个小时!现在`nose`终于运行我的所有测试,而不必在命令行上逐个命名. (2认同)

Mar*_*off 62

这种行为几乎可以肯定是因为您的文件没有根据nose的测试匹配行为命名.从鼻子文档:

nose从其工作目录中找到的python源文件,目录和包中自动收集测试(默认为当前工作目录).任何与testMatch正则表达式匹配的python源文件,目录或包(默认情况下:(?:^ | [b _.-])[Tt] est)将被收集作为测试(或测试集合的源).

重点是我的.

一些匹配的示例名称:

  • TestFoo.py
  • Foo-Test.py
  • Foo_Test.py
  • Foo.Test.py(请注意,这个会尝试导入Foo,如果不能则会引发异常)

一个名字看起来像它会匹配,但实际上并不:

  • FooTest.py

如果你只是重命名你的文件,你应该很高兴.


更新:我无法从您发布的详细信息中辨别出来,但是您的测试目录可能缺少__init__.py文件?

...确保你的"测试"目录实际上是模块(它们有一个空__init__.py文件).

  • 我错过了测试模块目录中的__init__.py文件.这个修复就像一个魅力! (3认同)
  • 会尝试...事情是,在我的Mac上拾取相同的文件...不会在所有平台上使用相同的匹配器吗? (2认同)

Roc*_*cky 43

我有同样的问题.我的测试在Windows中运行得很好,但在Ubuntu中没有.

在Ubuntu中,如果你运行:

nosetests -vv --collect-only
Run Code Online (Sandbox Code Playgroud)

你可能会看到它正在跳过你的测试文件,因为它是一个可执行文件:_Tools/LintControlFiles/test_HgLint.py 是可执行的; 跳过

为了让鼻子考虑可执行文件,运行如下:

nosetests --exe
Run Code Online (Sandbox Code Playgroud)


zah*_*anm 17

我可以确认,正如@ david-wolever所说,它们无法在Ubuntu上执行.跑

nosetests -vv --collect-only 
Run Code Online (Sandbox Code Playgroud)

查看检查哪些文件的完整详细信息.


MIT*_*tor 10

一些相关的,如果你正在运行目录的测试,即

nosetests ... tests/
Run Code Online (Sandbox Code Playgroud)

其中tests是我的测试文件夹的名称,并且在其中一个.py模块中有单独的python测试函数...你的函数必须从'test'开始,以便测试你认为你想要运行的测试.

例如:

 def test_something():
    ...
Run Code Online (Sandbox Code Playgroud)

nosetests将在此目录中执行时运行此函数

 def somethin_to_test():
    ...
Run Code Online (Sandbox Code Playgroud)

不会.