condition coverage in python

前端 未结 7 851
有刺的猬
有刺的猬 2021-02-07 04:53

Is there any tool/library that calculate percent of \"condition/decision coverage\" of python code. I found only coverage.py but it calculates only percent of \"statement covera

7条回答
  •  我在风中等你
    2021-02-07 05:24

    I don't know of any branch coverage tools for Python, though I've contemplated writing one. My thought was to start with the AST and insert additional instrumentation for each branch point. It's doable, but there are some tricky cases.

    For example,

    raise SomeException(x)
    

    Branch coverage for this needs to check that SomeException(x) was fully instantiated and didn't raise its own exception.

    assert x, "Oh No!: %r" % (x, y)
    

    This needs to check that the text on the right side of the assertion statement is fully evaluated.

    return args.name or os.getenv("NAME") or die("no name present")
    

    Each of the first two terms has to be checked for the true/false path, but not the last. In fact, the last might not even return.

    There were a lot of cases to worry about and I had no pressing need for it other than curiosity so I didn't go anywhere with it. I was also wondering if I would get a lot of false positives where I would need some way to repress specific warnings.

    If you want to try this route, start with Python 2.6 or 3.0. In those releases the AST module is documented and you can create your own AST nodes before generating the code or .pyc file.

提交回复
热议问题