pytest python类缺少测试覆盖率

pytest python类缺少测试覆盖率,python,python-3.x,pytest,code-coverage,pytest-cov,Python,Python 3.x,Pytest,Code Coverage,Pytest Cov,我正在用pytest--cov测试我的代码,但是我的一个模块得到了0%的覆盖率 该模块有一个类声明: class DataBaseMaker: @staticmethod def create_database(): conn = sqlite3.connect("database.db") def __init__(self): self.foo = 'bar' 该测试执行以下操作

我正在用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%-我做错了什么?

我能够找出问题所在。这不是因为代码本身,而是因为我调用了pytest。我做了
pytest--cov*projectname*
其中projectname也是项目所在文件夹的名称。我想我是从pytest文档中得到的?不确定


解决方案:我运行了
pytest--cov.
,现在我的类已经100%覆盖了。如果有人对这种行为有解释,我很乐意学习。

很难说有重复的案例,但听起来好像你没有运行你认为自己在运行的文件。尝试添加一个异常以创建_数据库,并查看测试是否失败。@Ned感谢您的回复。我想我正在运行正确的测试和文件,因为在运行测试时创建了数据库文件。而且所有的测试都通过了。还是我误解了?很容易有另一份代码,要么是因为编辑错误,要么是因为额外安装,要么是因为其他原因。@Ned我没有。该项目位于一个文件夹中,根文件夹中有main.py,模块文件夹中有DataBaseMaker.py,其中有提到的类,测试文件夹中有包含测试的Python文件。它实际上是3个文件+requirements.txt以及pytest和coverage生成的内容。这是一个谜。我希望我能为您提供答案。您告诉coverage仅测量projectname目录中的代码。通过改为。您让它测量在当前目录中找到的任何代码。但是DataBaseMaker类不在projectname目录中吗?应该测量一下的,是的。结构是projectname/class.py和projectname/tests/testclass.py,因此它们都在同一个目录中。如果您可以将代码和命令打包,以便其他人重现问题,我们可能会找到一个好的答案。