我试着做一个函数,给出一个单词,反转它,然后看看它是否正确地反转了它。如果是,则打印&;TEST passed &;但是我不能把最后一部分工作。代码是:
def back_it_up(any_word):
reverse = any_word[::-1]
print(any_word)
print(reverse)
test = reverse[::-1]
if any_word == test:
return True
else:
return False
def test_back_it_up():
print("")
print("Back It Up Unit Test...")
print("")
if back_it_up("book") == "koob":
print("TEST PASSED")
else:
print("TEST FAILED")
if back_it_up("college") == "egelloc":
print("TEST PASSED")
else:
print("TEST FAILED")
if back_it_up("dog") == "god":
print("TEST PASSED")
else:
print("TEST FAILED")
if back_it_up("code") == "edoc":
print("TEST PASSED")
else:
print("TEST FAILED")
if back_it_up("") == "Empty String":
print("TEST PASSED")
else:
print("TEST FAILED")
你的代码有几个问题…
首先,反向函数返回的不是字符串而是布尔值。这将使单元测试失败,因为您试图检查返回值是否为反转字符串。一个简单的解决方案是将函数更改为:
def back_it_up(any_word: str) -> str:
reverse = any_word[::-1]
print(any_word)
print(reverse)
return reverse
第二,这个改变将解决所有的测试用例,除了最后一个。发生这种情况是因为您试图将空字符串""
与具有内容"Empty String"
的字符串进行比较。这可以通过以下两种方式解决:
- 将测试套件上的
"Empty String"
替换为""
- 在你的反向函数中包含一个返回条件,当输入为空时获得该字符串。
简单地替换所有表示== 'string'
到== True
的行。在此之后,您的代码成功运行。
def back_it_up(any_word):
reverse = any_word[::-1]
print(any_word)
print(reverse)
test = reverse[::-1]
if any_word == test:
return True
else:
return False
def test_back_it_up():
print("")
print("Back It Up Unit Test...")
print("")
if back_it_up("book") == True:
print("TEST PASSED")
else:
print("TEST FAILED")
if back_it_up("college") == True:
print("TEST PASSED")
else:
print("TEST FAILED")
if back_it_up("dog") == True:
print("TEST PASSED")
else:
print("TEST FAILED")
if back_it_up("code") == True:
print("TEST PASSED")
else:
print("TEST FAILED")
if back_it_up("") == True:
print("TEST PASSED")
else:
print("TEST FAILED")
test_back_it_up()
注意:我没有完全理解if back_it_up("") == "Empty String":
意味着什么,所以我就把它True
。如果需要,可以进行编辑。输出:
Back It Up Unit Test...
book
koob
TEST PASSED
college
egelloc
TEST PASSED
dog
god
TEST PASSED
code
edoc
TEST PASSED
TEST PASSED