我可以在 mutmut 中禁用字符串突变吗?

Can I disable string mutation in mutmut?

我昨天用mutmut评估了我的一些项目的单元测试质量。我试过 cosmic-ray before, but it was unusable (bugs, performance)。我也试过 mut.py,但我也无法开始。

我发现使用 mutmut 时的一个问题是它给出了太多的误报: 结果 - 根据 mutmut - 至少一个单元测试应该失败,但事实并非如此。我观察到的大多数情况都是字符串更改:

# mutmut adds 'XX' to the following strings:
__version__ = "0.1.2"
ValueError("Explanation about the cause of the error")
logging.info("Starting to execute xy.")

所有这些一开始都不应该发生突变。我不想将 # pragma: no mutate 添加到所有这些行。我只是想删除/跳过/忽略 mutmut 中的这种类型的突变(我希望这也应该加快执行速度)。

这可能吗?

对此有几个不同的答案:

(关于速度,试试你能不能用 hammett,速度会快很多)

虽然没有系统可以禁用整个 class 突变。我真的不认为这是一个好工具,因为像异常一样测试错误情况非常重要,因为我发现这是 mutmut 发现的大多数错误所在!我同意日志有点混杂,但这可以用两个白名单系统处理。

顺便说一句,我是 mutmut 的作者。下次对于来自 google 的任何人,请在 github 问题跟踪器中提问!我只是无意中发现了这个,7 个月后。