使用py.test,两个在不同目录中调用相同的测试会导致py.test失败.这是为什么?如何在不重命名所有测试的情况下更改此设置?
复制做:
; cd /var/tmp/my_test_module
; mkdir -p ook/test
; mkdir -p eek/test
; touch ook/test/test_proxy.py
; touch eek/test/test_proxy.py
; py.test
============================= test session starts ==============================
platform linux2 -- Python 2.7.3 -- pytest-2.2.4
collected 0 items / 1 errors
==================================== ERRORS ====================================
___________________ ERROR collecting ook/test/test_proxy.py ____________________
import file mismatch:
imported module 'test_proxy' has this __file__ attribute:
/home/ygolanski/code/junk/python/mymodule/eek/test/test_proxy.py
which is not the same as the test file we want to collect:
/home/ygolanski/code/junk/python/mymodule/ook/test/test_proxy.py
HINT: remove __pycache__ / .pyc files and/or use …Run Code Online (Sandbox Code Playgroud) 我正在改变一堆旧的python代码,偶尔会遇到包之间的名称冲突.我有一个关于何时应该使用绝对导入以及是否适合仅按名称导入同级模块的问题.
/package/
/package/__init__.py
/package/subA
/package/subA/__init__.py
/package/subA/moduleA.py
/package/subA/moduleB.py
/package/subB
/package/subB/__init__.py
/package/subB/moduleA.py
/package/subB/moduleB.py
Run Code Online (Sandbox Code Playgroud)
包中的每个import语句应该是这样的:
import package.subX.moduleX
Run Code Online (Sandbox Code Playgroud)
要么
from package.subX import moduleX
Run Code Online (Sandbox Code Playgroud)
在子包__init__.py文件中怎么样?简单地说是不对的
import moduleA
import moduleB
Run Code Online (Sandbox Code Playgroud)
或者,在/package/subA/moduleA.py中,简单地放入是不对的:
import moduleB
Run Code Online (Sandbox Code Playgroud)