我有一个简单的python模块(我们称之为M1),它是独立的(唯一的导入是collections
),在一个包含丑陋的包中。部分丑陋之处在于包的__init__.py
文件中。但是M1很好而且干净,并且包含一些测试函数,可以与一起使用py.测试. 在
现在,我想测试M1,忽略所有的丑陋。但是py.测试想运行__init__.py
--有什么方法可以阻止它吗?我现在真的无法修复__init__.py
文件,我希望将测试函数与M1模块内容本身放在一起。在
我已经读过这个问题:`py.test` and `__init__.py` files它解释了这个问题,但没有提供解决方案。在
我的__init__.py
文件如下所示;它只是将项提升到包范围:
from .M1 import CleanThing1, CleanThing2
from .Evil1 import UglyThing1, UglyThing2
问题是Evil1模块需要一些PYTHONPATH黑客才能正确执行,当我运行时
^{pr2}$它因Evil1模块而失败。但我现在只想测试M1模块。在
不是的py.测试它想运行
__init.py__
,但是Python解释器。执行__init__.py
的规则是Python语言定义的一部分,任何绕过它的方法都必然是一次黑客攻击。在在本例中,我建议您自己定义一个存根的}导入该模块。在
Evil1
模块,并让{您可以使
__init__.py
文件知道py.测试如所述here。在所以基本上创建一个
mymodule/conftest.py
文件,包含以下内容在
^{pr2}$__init__.py
文件中,只需检查您是否在py.测试像会议一样这样我就可以运行
py.test mymodule/M1.py
,而不会出现导入错误。在包结构现在看起来像(我希望类似于您的结构)
相关问题 更多 >
编程相关推荐