Pythonはどのようにユニットのテスト用例を書いてhello worldをテストしますか?

4245 ワード

ブログ園をぶらぶらして、エタノールの大物のエッセイを見た.https://www.cnblogs.com/nbkhic/p/9370446.htmlそこで、このhello worldをどうやってテストするかを考えました.
print('hello world')

考えはstdoutの指向をioに修正することです.StringIOストリームの中で、それからストリームの中のデータを“hello world”と比較して、しかし書き終わった後に発見して、プログラムは間違いを報告していませんが、ストリームの中でデータが書き込まれていないで、百思不尽です;ファイルストリームに変更するしかありません.コードは次のとおりです.
import sys


def hi():
    print('hello world')

if __name__ == '__main__':
    old = sys.stdout

    with open('test','w') as oFile:
        sys.stdout = oFile
        hi()

    sys.stdout = old

    with open('test','r') as oFile:
        if 'hello world' + '
' == oFile.readline(): print('PASS') else: print('FAIL',file=sys.stderr)

結果的にPASSも出力されました
C:\Users\suneee\AppData\Local\Programs\Python\Python36\python.exe E:/wangjz/PyWorkSpace/LearnPython/test.py
PASS

Process finished with exit code 0

PS:比較文字列「hello world」の後になぜ「」を付けるのか、print関数の説明を見てみましょう
def print(*args, sep=' ', end='
'
, file=None): # known special case of print """ print(value, ..., sep=' ', end='
', file=sys.stdout, flush=False) Prints the values to a stream, or to sys.stdout by default. Optional keyword arguments: file: a file-like object (stream); defaults to the current sys.stdout. sep: string inserted between values, default a space. end: string appended after the last value, default a newline. flush: whether to forcibly flush the stream.
""" pass

 
転載先:https://www.cnblogs.com/kusy/p/9468784.html