8

私は、ソフトウェア QA のツールとして Python を使用する学習段階にあります。

次の簡単なテストを作成して、テキスト ファイル番号マトリックスで文字 'a' を見つけました。問題は、期待値が得られたものと等しいにもかかわらず、テストが失敗することです。

何故ですか?私が間違っていることを教えてもらえますか?

テスト スクリプト:

fin = open("abc.txt", "r")

arr_fin = []

for line in fin:
    arr_fin.append(line.split())

print arr_fin

for row in arr_fin:     
   arr_fin_1 = " ".join('{0:4}'.format(i or " ") for i in row) 
   print arr_fin_1



def find_letter(x, arr_fin_1):
    """
    >>> find_letter('a', arr_fin_1)
    97 
    """
    t=ord(x) #exchange to letter's ASCII value
    for i in arr_fin_1:
        if i==x:
            print t
            return;

def _test():
    import doctest
    doctest.testmod()

if __name__ == "__main__":
    _test()

エラーメッセージ:

Expected:
    97 
Got:
    97
**********************************************************************
1 items had failures:
   1 of   1 in __main__.find_letter
***Test Failed*** 1 failures.
4

2 に答える 2

13

97 の後に余分なスペースがあります。これを削除すると、テストは正常に実行されるはずです。

于 2011-05-02T11:32:23.763 に答える
2

これ:

return;

関数を return にしNoneます。

ということreturn tですか?


それに加えて、IMHOdoctestテストは自己完結型であることを意図しています。これは、ユーザーがドキュメントで確認し、コンテキストなしで理解する必要があるものです。あなたの例でarr_fin_1は、ユーザーには完全に不透明なモジュール ローカル オブジェクトを使用しています。find_letter自己完結型の例を提供するために、呼び出しの前に doctest で定義することをお勧めします。

于 2011-05-02T11:27:07.733 に答える