不带doctes的Python测试函数

2024-09-29 17:21:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我目前正在编写两个函数来反转字符串。我已经编写了这两个函数。现在我尝试编写一个函数,它有一系列测试用例,可以用来测试这两个函数,而不是调用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来测试\u reverse,如果它通过了所有的测试,则返回true,否则返回false。我如何通过strReverseI来测试你的倒车

我试过“test\u reverse(strReverseI)”,但它要求strReverseI的参数。不知道该通过什么

你知道吗

编辑:我意识到我的函数测试函数不应该测试是真是假。那是我用来测试其他东西的另一套装置。否则,我将更改它以查看“a”==“a”。不管怎样,这个问题的前提还是一样的。仍然不确定如何用另一个函数作为参数调用函数


Tags: 函数intesttruenew参数returndef
1条回答
网友
1楼 · 发布于 2024-09-29 17:21:44

可以将函数作为第一类对象传递:

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,以了解其他用法

相关问题 更多 >

    热门问题