不要为只会使用一次的值创建命名变量,尤其是在名称没有添加任何有用信息的情况下(这适用于一般代码,而不仅仅是测试):
print(are_anagrams("danger", "garden"))
print(are_anagrams("nameless", "salesmen"))
print(are_anagrams("name", "sale"))
print(are_anagrams("n", "sa"))
如果你
assert
而不是仅仅打印期望值;这样,您就不需要查看输出并将其与您期望的结果进行比较,您只需运行测试,如果它没有引发
AssertionError
你知道代码的工作方式与你期望的一样:
assert are_anagrams("danger", "garden")
assert are_anagrams("nameless", "salesmen")
assert not are_anagrams("name", "sale")
assert not are_anagrams("n", "sa")
编写这样的测试序列的另一种方法是创建一个表,然后遍历它,例如:
test_cases = [
("danger", "garden", True),
("nameless", "salesmen", True),
("name", "sale", False),
("n", "sa", False),
]
for s1, s2, result in test_cases:
assert are_anagrams(s1, s2) == result
当测试用例更复杂时,表格技术更有用,因为它可以更容易地直观地组织测试数据,以验证您是否覆盖了所有可能的输入组合;它还提供了动态生成表的可能性。