Coverage.py 无法发现子目录中没有 init.py 文件的测试

2024-04-22

当我运行 python 覆盖范围时,我总是需要一个空的__init__.py测试子目录中的文件以获得运行测试的覆盖范围。这是 python2 软件包的要求,但不是 python3 的要求。为了重现,我执行了以下操作(先决条件是 python3、pip3 和 brew):

  1. 运行以下终端命令:

    pip3 install coverage
    
  2. 创建以下目录结构:

    example\
        example.py
    tests\
        test_example.py
    

示例.py:

#!/usr/bin/env python3
class Example:
    value = 3

    def update(self):
        self.value = 4

测试示例.py:

#!/usr/bin/env python3

import unittest
from example.example import Example

class TestExample(unittest.TestCase):
    def test_example(self):
        example_object = Example()
        self.assertEqual(3, example_object.value)
        example_object.update()
        self.assertEqual(4, example_object.value)
  1. 运行以下终端命令:

    coverage run --branch -m unittest discover -s . && coverage report
    

我应该得到:Ran 1 test in x.yz seconds,但我总是得到Ran 0 tests in x.yz seconds,为了解决这个问题,我必须添加__init__.py文件到两个目录。如何在不需要初始化文件的情况下运行覆盖范围?

如果您需要我提供有关此问题的其他信息,请告诉我。我将不胜感激任何帮助!


虽然Python 3不需要__init__.py文件,省略它们会创建名称空间包,如果不需要它们,这不是一个好主意。例如,它们是最后读取的,因此即使 PYTHONPATH 中较晚的目录也可以隐藏您的文件。

您应该创建__init__.py无论如何文件。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Coverage.py 无法发现子目录中没有 init.py 文件的测试 的相关文章

随机推荐