测试时,'python setup.py test' 是唯一可以在 Python 包中测试的方法吗?
When testing, 'python setup.py test' is the only way to test in Python Package?
我的 Python 包结构有问题。
这是我在 Mac OSX 和 Python 3.4 中所做的:
1. mkdir MyProject
2. cd MyProject
3. virtualenv --python=python3.4 venv
4. . venv/bin/activate
5. pip install pytest pyscaffold
6. putup MyProject
然后,目录结构将如下所示:
MyProject/
MyProject/
docs/
myproject/
tests/
requirements.txt
setup.py
.
.
venv/
我在myproject
中添加了apple.py
,在tests
中添加了test_apple.py
。
那么,结构就是这样的:
MyProject/
MyProject/
docs/
myproject/
apple.py
tests/
test_apple.py
requirements.txt
setup.py
.
.
venv/
apple.py
import sys
for path in sys.path:
print(path)
print("start apple")
def get_apple():
print("apple!!")
return 5
当我 运行 apple.py
通过在 myproject
目录中键入 python apple.py
时,它会打印:
/Users/Chois/Desktop/MyProject/MyProject/myproject
/Users/Chois/Desktop/MyProject/venv/lib/python34.zip
/Users/Chois/Desktop/MyProject/venv/lib/python3.4
/Users/Chois/Desktop/MyProject/venv/lib/python3.4/plat-darwin
/Users/Chois/Desktop/MyProject/venv/lib/python3.4/lib-dynload
/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4
/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/plat-darwin
/Users/Chois/Desktop/MyProject/venv/lib/python3.4/site-packages
start apple
如上所示,sys.path
包括 /Users/Chois/Desktop/MyProject/MyProject/myproject
所以,我做了一个 test_apple.py
这样的:
test_apple.py
import sys
for path in sys.path:
print(path)
from myproject.apple import get_apple
def test_apple():
assert 5 == get_apple()
当我通过键入 py.test -s test_apple.py
、
运行 此代码时
(-s
选项用于在代码中显示 print
语句的结果)
/Users/Chois/Desktop/MyProject/MyProject/tests
/Users/Chois/Desktop/MyProject/venv/lib/python34.zip
/Users/Chois/Desktop/MyProject/venv/lib/python3.4
/Users/Chois/Desktop/MyProject/venv/lib/python3.4/plat-darwin
/Users/Chois/Desktop/MyProject/venv/lib/python3.4/lib-dynload
/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4
/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/plat-darwin
/Users/Chois/Desktop/MyProject/venv/lib/python3.4/site-packages
Traceback (most recent call last):
File "test_apple.py", line 5, in <module>
from myproject.apple import get_apple
ImportError: No module named 'myproject'
但是,当我 运行 通过键入 python setup.py test
进行测试时,它 运行 没有错误! !!
我想知道的是我如何 运行 使用 py.test -s test_xxxx.py
而不是 ALL 测试模块 python setup.py test
的特定测试模块].
需要你的帮助,谢谢。
请阅读Good Integration Practices。
make sure that “mypkg” is importable, for example by typing once:
pip install -e . # install package using setup.py in editable mode
我的 Python 包结构有问题。
这是我在 Mac OSX 和 Python 3.4 中所做的:
1. mkdir MyProject
2. cd MyProject
3. virtualenv --python=python3.4 venv
4. . venv/bin/activate
5. pip install pytest pyscaffold
6. putup MyProject
然后,目录结构将如下所示:
MyProject/
MyProject/
docs/
myproject/
tests/
requirements.txt
setup.py
.
.
venv/
我在myproject
中添加了apple.py
,在tests
中添加了test_apple.py
。
那么,结构就是这样的:
MyProject/
MyProject/
docs/
myproject/
apple.py
tests/
test_apple.py
requirements.txt
setup.py
.
.
venv/
apple.py
import sys
for path in sys.path:
print(path)
print("start apple")
def get_apple():
print("apple!!")
return 5
当我 运行 apple.py
通过在 myproject
目录中键入 python apple.py
时,它会打印:
/Users/Chois/Desktop/MyProject/MyProject/myproject
/Users/Chois/Desktop/MyProject/venv/lib/python34.zip
/Users/Chois/Desktop/MyProject/venv/lib/python3.4
/Users/Chois/Desktop/MyProject/venv/lib/python3.4/plat-darwin
/Users/Chois/Desktop/MyProject/venv/lib/python3.4/lib-dynload
/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4
/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/plat-darwin
/Users/Chois/Desktop/MyProject/venv/lib/python3.4/site-packages
start apple
如上所示,sys.path
包括 /Users/Chois/Desktop/MyProject/MyProject/myproject
所以,我做了一个 test_apple.py
这样的:
test_apple.py
import sys
for path in sys.path:
print(path)
from myproject.apple import get_apple
def test_apple():
assert 5 == get_apple()
当我通过键入 py.test -s test_apple.py
、
运行 此代码时
(-s
选项用于在代码中显示 print
语句的结果)
/Users/Chois/Desktop/MyProject/MyProject/tests
/Users/Chois/Desktop/MyProject/venv/lib/python34.zip
/Users/Chois/Desktop/MyProject/venv/lib/python3.4
/Users/Chois/Desktop/MyProject/venv/lib/python3.4/plat-darwin
/Users/Chois/Desktop/MyProject/venv/lib/python3.4/lib-dynload
/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4
/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/plat-darwin
/Users/Chois/Desktop/MyProject/venv/lib/python3.4/site-packages
Traceback (most recent call last):
File "test_apple.py", line 5, in <module>
from myproject.apple import get_apple
ImportError: No module named 'myproject'
但是,当我 运行 通过键入 python setup.py test
进行测试时,它 运行 没有错误! !!
我想知道的是我如何 运行 使用 py.test -s test_xxxx.py
而不是 ALL 测试模块 python setup.py test
的特定测试模块].
需要你的帮助,谢谢。
请阅读Good Integration Practices。
make sure that “mypkg” is importable, for example by typing once:
pip install -e . # install package using setup.py in editable mode