Я не знаю каких-либо инструментов покрытия веток для Python, хотя я собирался написать один. Я думал начать с AST и добавить дополнительные инструменты для каждой точки ветвления. Это выполнимо, но есть некоторые хитрые случаи.
Например,
raise SomeException(x)
Покрытие ветки для этого должно проверить, что SomeException (x) был полностью создан и не вызвал свое собственное исключение.
assert x, "Oh No!: %r" % (x, y)
Это необходимо для проверки того, что текст в правой части утверждения утверждения полностью оценен.
return args.name or os.getenv("NAME") or die("no name present")
Каждое из первых двух слагаемых должно быть проверено на истинный / ложный путь, но не последний. На самом деле, последний может даже не вернуться.
Было много случаев для беспокойства, и у меня не было острой необходимости в этом, кроме любопытства, поэтому я никуда не ходил с этим. Мне также было интересно, получу ли я много ложных срабатываний, когда мне понадобится какой-то способ подавления определенных предупреждений.
Если вы хотите попробовать этот маршрут, начните с Python 2.6 или 3.0. В этих выпусках модуль AST документирован, и вы можете создавать свои собственные узлы AST перед созданием кода или файла .pyc.