当前位置: 首页 > news >正文

面试整理--一个报告生成的方案解析

最近又快到了年后找工作的时间,近期写点工作积累,供大家参考。

欢迎关注公主号【测试开发备忘录】,交流职场技巧和经验

首先从工作中一个报错来展开:

    Start directory is not importable:

错误信息 "Start directory is not importable" 通常出现在使用 unittest 测试发现器时,当你指定的起始目录(-s 参数)不是一个有效的 Python 包,或者该目录中缺少 __init__.py 文件时。

在 Python 中,一个目录要被视为一个包,必须在该目录中包含一个 __init__.py 文件。这个文件可以是空的,但它的存在告诉 Python 解释器该目录应该被视为一个包。

解决方法

添加 __init__.py 文件: 确保你指定的起始目录包含一个 __init__.py 文件。例如,如果你的测试目录是 ./tests,那么你应该在 tests 目录中创建一个空的 __init__.py 文件。


常用的报告生成命令:

coverage run -m unittest discover -v -s ./tests:

该命令使用 Python 的 coverage 工具来测量代码覆盖率,并运行 unittest 测试用例:

  • coverage run:启动 coverage 工具来跟踪代码的执行情况,以便计算代码覆盖率。
  • -m unittest discover:运行 unittest 测试发现器,自动查找并运行测试用例。unittest 是 Python 的标准测试框架。
  • -v:表示“verbose”,让 unittest 输出更详细的测试信息。
  • -s ./tests:指定测试发现器的起始目录。这里 ./tests 表示从当前目录下的 tests 目录开始查找测试用例。

当你运行这个命令时,coverage 会记录哪些代码行被执行了,然后你可以使用 coverage 工具的其他命令来生成报告,例如:

  • coverage report:在终端输出代码覆盖率报告。
  • coverage html:生成一个 HTML 格式的覆盖率报告,你可以在浏览器中查看。

示例

假设你的项目结构如下:

project/
│
├── main.py
└── tests/
    ├── __init__.py
    ├── test_main.py
    └── test_another_module.py

你可以在项目根目录下运行以下命令:

coverage run -m unittest discover -v -s ./tests

这将运行 tests 目录下的所有测试用例,并输出详细的测试信息。

生成覆盖率报告

coverage report

或者生成一个更易读的 HTML 报告:

coverage html

然后可以在 project/htmlcov/index.html 文件中查看覆盖率报告。

注意事项

  1. 确保你的测试用例文件名以 test_ 开头,这样 unittest discover 才能正确识别它们。
  2. 如果你的测试用例依赖于特定的环境或配置,确保在运行测试前正确设置这些环境变量或配置。
  3. 如果你的项目中有多个测试目录,你可以使用多个 -s 参数指定它们,例如:-s ./tests -s ./another_tests

通过使用 coverage 和 unittest,可以有效地测量和提高你的代码覆盖率,确保测试用例覆盖了更多的代码路径。

 

相关文章:

  • excel文件有两列,循环读取文件两列赋值到字典列表。字典的有两个key,分别为question和answer。将最终结果追加到json文件
  • C语言:字符串去特定字符
  • UGO和ACL
  • 从关键词到权重:TF-IDF算法解析
  • Atom of Thoughts for Markov LLM Test-Time Scaling论文解读
  • 凸集和凸函数
  • Google C++编码规范指南(含pdf)
  • python主成分分析法1
  • MyBatis 配置文件解析使用了哪些设计模式
  • 在 Dojo 框架中define、declare 和 require的区别
  • 【自用】NLP算法面经(5)
  • 美摄接入DeepSeek等大模型,用多模态融合重构视频创作新边界!
  • 从零开发数据可视化
  • node-ddk,electron 组件, 系统基上下文菜单(右键菜单)
  • qt 图像后处理的软件一
  • spring boot3 验证码工具kaptcha使用
  • vue 自制列表,循环滚动
  • python本地连接minio
  • Python:单继承方法的重写
  • (十六) 60s搞懂 : Zookeeper 的详细安装,使用及注意事项
  • 科普|认识谵妄:它有哪些表现?患者怎样走出“迷雾”?
  • 消息人士称俄方反对美国代表参加俄乌直接会谈
  • 丰富“互换通”产品类型,促进中国金融市场高水平对外开放
  • 视频丨中国海警成功救助8名外籍遇险渔民,韩方向中方致谢
  • 七部门:进一步增强资本市场对于科技创新企业的支持力度
  • 俄副外长:俄美两国将举行双边谈判