簡體   English   中英

使用自定義函數將單元測試讀取到python中的文件

[英]Reading a Unit Test to a file in python with a custom function

我有一系列的單元測試,我試圖解析成一個文本文件,雖然我知道這可以通過調用unittest.main()的一些不同用途來實現,但我有點打嗝,因為我正在處理的代碼需要使用一個函數。 它目前寫成

unittest.TextTestRunner(verbosity=2).run(customFunction())

stdout由另一個文件讀取

p = Popen(command, stdout=PIPE, stderr=STDOUT stdin=PIPE)
result = p.communicate()

# Write result to .txt file

唯一的問題是,由於單元測試必須調用的其他程序,程序在將結果變量分配給控制台輸出時會掛起。 我正在嘗試重寫代碼以使單元測試本身吐出到日志文件中(而不是將控制台輸出解析為文本文件),但是我在使用unittest.main重寫這個問題時遇到了一些小問題( )由於必須提供自定義功能。 有沒有人對如何做到這一點有任何建議或解決方案?

我發現了如何自己完成這個:有一個可以與TextTestRunner一起使用的流選項,它將unittest的輸出指向你想要的任何文件對象。 所以如果你想寫一個txt文件,你會寫:

logFile = open("C:/folder/logfile.txt", "w")
unittest.TextTestRunner(stream=logFile, verbosity=2).run(customFunction())
logFile.close()

只是想我會分享這個,以便如果有人在以后遇到同樣的問題,他們不會遇到我所做的fustration。

當我們在Python中使用stream時,會更好地為問題代碼區域提供捕獲器,並再次確保我建議使用這樣的結構:

stream = open("...", "w")
try:
    unittest.TextTestRunner(stream=stream, verbosity=2).run(suite)
finally:
    stream.close()

但在我看來,這個捕手代碼是一個很大的,這樣寫起來更容易:

with open("...", "w") as stream:
    unittest.TextTestRunner(stream=stream, verbosity=2).run(suite)

也許有更好的風格?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM