如何防止鼻子导入__init__.py文件?

时间:2011-04-26 12:53:48

标签: python packages package nose nosetests

是否可以指示nose测试框架仅在test_*.py个文件中运行测试?

实际上,使用以下目录结构执行nosetests A

A/
  test_A.py
  B/
    __init__.py

导入B,我想避免。

原因是B模块以import numpy开头,因为它仅用于在用户安装了可选的NumPy模块时使用。但是,未安装NumPy的用户不希望nosetests处理B/__init__.py,因为即使NumPy是可选的,它也必然会在import numpy上失败。如何实现这一目标?

4 个答案:

答案 0 :(得分:4)

只需使用try:..except ImportError:...块包装导入。在这种情况下,你甚至可以设置一个变量,让你知道numpy是否可用。

答案 1 :(得分:2)

当然,只需使用--match和--exclude命令行选项来限制鼻子将作为测试程序发现的内容。

答案 2 :(得分:1)

Nose可以接受/拒绝目录,文件,模块,类和方法级别的测试。您需要拒绝B 目录。无法忽略__init__.py文件; Python从未见过它。它会在导入B时显示,因此您需要忽略B

尝试:

nosetests --exclude=B

答案 3 :(得分:0)

我认为鼻子排除插件可能会有所帮助。如果您安装此插件,然后运行:

    nosetests --exclude-dir B

它可能对你有用。我有同样的问题,并取得了一些可以通过的结果。现在我的下一个问题是创建nosetests配置文件时exclude-dir似乎不是一个可用的选项。