如何构造python项目以用于coverage.py?

2024-09-29 17:22:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个布局如下的包裹:

tiny-py-interpreter/
|-- setup.py
|-- .coveragerc
|-- tinypy/
    | -- foo/
    | -- bar/
    | -- tests/
    | -- tinypyapp.py
    | -- run_tests.py

这里有一些来自设置.py公司名称:

^{pr2}$

安装包后,将安装名为tinypy的控制台脚本:

pip3 install .

然后我运行报道:

coverage run setup.py test
coverage combine
coverage report

我所有的测试都是以这样的方式实现的,每个测试都会启动tinypy的一个子进程,所以我在.coveragerc中使用parallel = True来捕获覆盖运行的结果。在

本质上,我的布局与coverageitself相同,其中coverage和{}与我的例子中的tinypy和{}是相同的。在

问题执行控制台脚本tinypytinypyapp.py)时,它使用tinypy包的安装版本,该版本位于/usr/local/lib/python3.5/site-packages/tinypy/。覆盖率忽略./tinypy中的源代码(因为它们没有被使用)。如果省略了source参数,则可以看到site-packages/tinypy中代码的覆盖率。在

问题:如何合理组织项目?当tinypyapp.py作为脚本安装时,它将安装在与tinypy文件夹相同的级别(更高一级,而不是内部)。我不能把tinypyapp.py放在tinypy文件夹之外设置.py找不到。因此,我不能使用tinypyapp.py,必须使用脚本的名称(即tinypy)。在


Tags: runpy版本脚本名称packagessetupcoverage
2条回答

我认为最简单的方法是不要将正在处理的代码安装到站点包中,而是使用开发安装:

pip install -e .

我当前的解决方法是在根文件夹中创建test_entry_point.py

tiny-py-interpreter/
|  setup.py
|  test_entry_point.py
|  ...

包括以下内容:

^{pr2}$

在测试中启动子进程时使用以下文件名:

tinypy_binary = sys.executable + ' ' + os.getcwd() + '/test_entryp.py'
subprocess.run(tinypy_binary, ...)

相关问题 更多 >

    热门问题