Pythonはどのようにユニットのテスト用例を書いてhello worldをテストしますか?
4245 ワード
ブログ園をぶらぶらして、エタノールの大物のエッセイを見た.https://www.cnblogs.com/nbkhic/p/9370446.htmlそこで、このhello worldをどうやってテストするかを考えました.
考えはstdoutの指向をioに修正することです.StringIOストリームの中で、それからストリームの中のデータを“hello world”と比較して、しかし書き終わった後に発見して、プログラムは間違いを報告していませんが、ストリームの中でデータが書き込まれていないで、百思不尽です;ファイルストリームに変更するしかありません.コードは次のとおりです.
結果的にPASSも出力されました
PS:比較文字列「hello world」の後になぜ「」を付けるのか、print関数の説明を見てみましょう
転載先:https://www.cnblogs.com/kusy/p/9468784.html
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