【问题标题】:coverage.py: Why the expected lines are not marked green in html report?coverage.py:为什么预期的行在 html 报告中没有标记为绿色?
【发布时间】:2019-12-19 09:56:56
【问题描述】:

示例代码:

#!/usr/bin/env python

import os
import sys
from coverage import Coverage

class Cover_Diy(object):

    def cover_diy(self, cmd):
       if cmd == "hostname":
           os.system(cmd)
       elif cmd == "uptime":
           os.system(cmd)
       else:
           os.system(cmd)


def main(args):
    covd = Cover_Diy()
    covd.cover_diy(args[1])

if __name__ == "__main__":
    cov = Coverage()
    print dir(cov)
    cov.start()
    args = sys.argv
    try:
       sys.exit(main(args))
    except Exception as ex:
       print ex
    cov.stop()
    cov.html_report(directory="/home/username/scripts/html")

使用以下命令执行代码: python sample.py 主机名

问题: 第 3、4、5、7、9、10、11、18 行标记为缺失,表示未执行,为什么会这样?

enter image description here

【问题讨论】:

  • 这里的代码和图片中的代码不匹配。
  • 抱歉,造成了混乱。下次一定会注意的,但我认为这次只是变量名不匹配。

标签: python code-coverage coverage.py


【解决方案1】:

您的defclass 行在文件运行时执行。这发生在您在第 23 行开始覆盖之前。覆盖无法观察在它开始之前发生的执行。

您需要将运行覆盖率的代码与要衡量覆盖率的代码分开。我不确定这个程序的目标是什么。通常只使用覆盖命令行来运行现有的 Python 程序会更简单,根本不使用覆盖 API。

【讨论】:

  • 感谢您的回复,基本上这是一个示例程序,但我的想法是为内部基于 python 的服务收集代码覆盖率。我在覆盖率和服务方面面临的问题是相似的,我无法有效地使用命令行我必须使用 API,因为我要执行数千个测试。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-08-28
  • 1970-01-01
  • 1970-01-01
  • 2021-04-15
  • 2022-11-17
  • 2020-10-03
  • 1970-01-01
相关资源
最近更新 更多