【发布时间】:2021-02-10 22:19:34
【问题描述】:
我正在使用 pytest --cov 测试我的代码,但我的一个模块的覆盖率为 0%。
该模块有一个这样的类声明:
class DataBaseMaker:
@staticmethod
def create_database():
conn = sqlite3.connect("database.db")
def __init__(self):
self.foo = 'bar'
测试执行以下操作:
def test_create_database():
DataBaseMaker.create_database()
assert Path("database.db").is_file()
对此的测试覆盖率为 0% - 我在这里做错了什么?
【问题讨论】:
-
很难用可重现的情况说,但听起来你没有运行你认为的文件。尝试向create_database添加异常,看看测试是否失败。
-
@Ned 感谢您的回复。我想我正在运行正确的测试和文件,因为在运行测试时会创建数据库文件。所有测试也都通过了。还是我误会了?
-
很容易得到另一个代码副本,要么是因为编辑错误,要么是额外安装,或者其他原因。
-
@Ned 我不知道。该项目位于一个文件夹中,main.py 位于根文件夹中,模块文件夹包含 DataBaseMaker.py 和提到的类,以及一个包含包含测试的 Python 文件的测试文件夹。它实际上是 3 个文件 + requirements.txt 以及 pytest 和 coverage 生成的东西。
-
这是个谜。我希望我能给你答案。
标签: python python-3.x pytest code-coverage pytest-cov