我可以在 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 中的这种类型的突变(我希望这也应该加快执行速度)。
这可能吗?
对此有几个不同的答案:
__version__
不久前就被列入了 mutmut 的白名单。
- 您可以用
# pragma: no mutate
标记一行以使其不发生变化。
- 有一个具有高级白名单的新系统可以为您解决此问题:https://github.com/boxed/mutmut/#advanced-whitelisting-and-configuration
(关于速度,试试你能不能用 hammett,速度会快很多)
虽然没有系统可以禁用整个 class 突变。我真的不认为这是一个好工具,因为像异常一样测试错误情况非常重要,因为我发现这是 mutmut 发现的大多数错误所在!我同意日志有点混杂,但这可以用两个白名单系统处理。
顺便说一句,我是 mutmut 的作者。下次对于来自 google 的任何人,请在 github 问题跟踪器中提问!我只是无意中发现了这个,7 个月后。
我昨天用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 中的这种类型的突变(我希望这也应该加快执行速度)。
这可能吗?
对此有几个不同的答案:
__version__
不久前就被列入了 mutmut 的白名单。- 您可以用
# pragma: no mutate
标记一行以使其不发生变化。 - 有一个具有高级白名单的新系统可以为您解决此问题:https://github.com/boxed/mutmut/#advanced-whitelisting-and-configuration
(关于速度,试试你能不能用 hammett,速度会快很多)
虽然没有系统可以禁用整个 class 突变。我真的不认为这是一个好工具,因为像异常一样测试错误情况非常重要,因为我发现这是 mutmut 发现的大多数错误所在!我同意日志有点混杂,但这可以用两个白名单系统处理。
顺便说一句,我是 mutmut 的作者。下次对于来自 google 的任何人,请在 github 问题跟踪器中提问!我只是无意中发现了这个,7 个月后。