我目前正在编写两个反转字符串的函数。我已经编写了这两个函数。现在我试着写一个函数,它有一系列测试用例,可以用来测试两个函数,而不是调用doctest(因为两个函数都有相同的测试)。
但我不确定如何调用这些函数。这是我拥有的。
def strReverseI(s):
'''(str) -> str
Takes a str and reverses it into a new string.
>>> strReverseR('Hello World!')
'!dlroW olleH'
>>> strReverseR('CIS 210')
'012 SIC'
'''
x = len(s) - 1
new = ''
while x >= 0:
new = new + str(s[x]) #last char of s
x = x - 1 #goes down back one char in s
return new
def test_reverse(f):
testcases = (('', ''),
('a', 'a'),
('xyz', 'zyx'),
('testing123', '321gnitset'),
('hello, world', 'dlrow ,olleh')
)
for i in testcases:
if f(i) != True:
return False
else:
return True
我想将strReverseI传递给test_reverse,如果它通过所有测试则返回true,否则返回false。我如何将strReverseI传递给test_reverse?
我已尝试过" test_reverse(strReverseI),但它要求strReverseI的参数。不知道该通过什么。
有什么想法吗?
编辑:我意识到我的功能测试功能不应该测试是真还是假。那是我用于测试其他东西的不同设置。否则,我会改变它,看看是否' a' ==' a'。无论如何,问题的前提仍然是一样的。仍然不确定如何使用另一个函数作为参数调用该函数。
答案 0 :(得分:0)
您可以将函数作为第一类对象传递:
def test_reverse(functions):
...
for function in functions:
for case in testcases:
function(test) #<-- call the function to test here
# and handle the results as needed
# maybe in a try/except block
并调用这样的测试:
functions = [strReverseI, strReverseII]
test_reverse(functions)
另请参阅this answer,了解其他用途