如何对这个lambda代码进行单元测试?

3

假设我有以下Python代码:

try:
    from fabulous.color import fg256
    format_info = lambda x: fg256(63, unicode(x, 'utf-8')).as_utf8
except ImportError:
    format_info = lambda x: '\033[1;30m' + x + '\033[0m'

我该如何进行单元测试?

值得测试吗?

需要模拟导入语句,以便剪切两个分支。这是相当简单的 - 例如,将fg256模拟为具有raise ImportError的副作用。

检查返回的字符串是否具有正确的控制字符是可以的,但感觉比较脆弱。


1
为什么要测试那个?在第一种情况下,测试似乎应该已经由包的编写者执行,而在后一种情况下...它的正确性可以在两行内正式证明。 - Bakuriu
@Bakuriu:嗯,我是包编写者,所以我应该测试一下...也许确实不需要测试,那就可以作为一个好的答案。问题已经编辑过了,更加清晰明了。 - Sardathrion - against SE abuse
1个回答

0
你想要测试什么?你似乎有两个不相关的情况:
  • 导入失败
  • lambda 返回正确的信息
其实,你并不需要检查不使用你的代码会失败;但如果你仍然想要测试这个(也许因为这是某人在一个流行论坛上发布的代码),我建议将其分成两个不同的测试。
我们不知道你的 lambda 应该返回什么,但从外观上看,它应该返回类似于你在 except 分支中赋值的字符串吧?

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接