2017-11-08 19 views
0

現在、文字列を逆転させる2つの関数を書いています。私はすでにこれらの機能の両方を書いています。今では、doctestを呼び出す代わりに2つの関数をテストするために使用できる一連のテストケースを持つ関数を記述しようとしています(両方の関数が同じテストを持つためです)。Python - doctestのないテスト関数

しかし、私は関数を呼び出す方法がわかりません。私は何を持っているのHeres。

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 

私はtest_reverseとそれ以外のすべてのテストはfalseを渡す場合はtrueを返すようにstrReverseIを渡したいです。 strReverseIをtest_reverseにどのように渡すのですか?

私は「test_reverse(strReverseI)しようとしましたが、それはstrReverseIのパラメータを要求しますけれども合格するかわからない

任意のアイデア

EDIT:。。?私は私の機能テスト機能shouldnを実現します」真実か偽であるかをテストする必要があります。それは私が別のテストのために用意した別の設定からのものでしたが、それ以外の場合は、「a」==「a」かどうかを調べるために変更します。他の関数をパラメータとして呼び出す方法はまだ分かりません

答えて

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も参照
関連する問題