【发布时间】:2015-04-21 12:01:01
【问题描述】:
我正在编写一个 python 包,其中将可执行脚本注册到“setup.py”作为入口点。安装软件包时,这些被放置 进入没有“.py”扩展名的python包安装的“bin”目录。我希望能够运行包的单元测试 安装软件包后也可以作为可执行文件。单元测试在 setup.py 的“entry_points”中的“test_package.py”中: 运行 python 包
setup(
entry_points={
'console_scripts': [
'my_exec = mypackage.my_exec:main'
'test_package = mypackage.test_package.main'],
}
)
test_package.py 脚本从“test-files”中读取一些文件:
mypackage/
setup.py
mypackage/
my_exec.py
test_package.py
# files needed to run tests
test-files/
# directory containing files written by 'test_package'
test-results/
当我在包内运行“test_package.py” 时,它运行良好。但是,当我安装它并将“test_package”创建为“bin”中的可执行文件时,然后运行:
$ test_package
从命令行找不到测试。它说“运行0个测试”。这个目录结构有什么问题?以某种方式分发单元测试的正确方法是什么 即使他们创建文件,他们也可以从命令行运行?如果软件包是为使用 sudo 权限的人安装的,那么我希望没有 sudo 的用户能够运行这些软件包,而无需对软件包的安装位置进行写访问。
test_package.py的结构是:
class TestPackage(unittest.Test):
def setUp():
...
def test_foo():
# read stuff from 'test-files/'
# ...
# output stuff to 'test-results/'
# ...
def main():
unittest.main()
if __name__ == '__main__':
main()
【问题讨论】:
标签: python package pip setuptools