如何使py.test --cov跳过virtualenv目录

时间:2016-01-07 09:21:38

标签: python-2.7 virtualenv pytest test-coverage

我是否应该关心我的测试如何涵盖我在项目中使用的外部库?

py.test --cov显示所有文件的覆盖方式,包括我的virtualenv目录中的文件。如何使输出仅显示我编写的模块的覆盖范围?

4 个答案:

答案 0 :(得分:13)

在项目的根目录中,创建包含以下内容的文件.coveragerc

[run]
omit = path_to_libs_to_omit/*

根据您的设置,您可能需要将--cov-config=path/to/.coveragerc添加为py.test命令的选项。

您可以使用更多选项to configure coverage

答案 1 :(得分:8)

您应该将模块的名称添加到--cov命令行选项,例如表单pytest-cov文档:

py.test --cov=myproj tests/

这会将覆盖范围限制为模块myproj及其所有子模块。

答案 2 :(得分:1)

@alexamici 答案是 virtualenvs 的正确答案,但为了完整起见,添加 pyproject.toml(python 项目的建议配置文件)设置:

[tool.coverage.run]
omit = [
    "file/to/exclude.py",
    "other/file.py",
    "some/path/*"
    ]

答案 3 :(得分:0)

这是我设法做到的: db.Debug().Model(&Booking{}).Select("bookings.id, bookings.user, bookings.members, bookings.class_id, classes.name as class_name").Joins("left join classes on bookings.class_id = classes.id").Scan(&bookings)

pytest.py

[pytest] python_files = tests.py test_*.py *_tests.py addopts = -v -p no:warnings --nomigrations --cov=. --no-cov-on-fail

coveragerc