【问题标题】:Python - Testing function without doctestPython - 没有 doctest 的测试功能
【发布时间】:2017-11-08 01:41:44
【问题描述】:

我目前正在编写两个反转字符串的函数。我已经编写了这两个函数。现在我正在尝试编写一个具有一系列测试用例的函数,可用于测试这两个函数而不是调用 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'。无论如何,问题的前提仍然是相同的。仍然不确定如何以另一个函数作为参数调用该函数。

【问题讨论】:

    标签: python testing reverse doctest


    【解决方案1】:

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

    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,另一种用法

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-16
      • 2012-05-30
      • 2019-10-06
      • 1970-01-01
      相关资源
      最近更新 更多