logo
Loading...

unittest.main() 參數問題? - Cupoy

各位老師同學好小弟在做今天作業的時候碰到了點問題但是在把 unittest.main() 這行加上這...

unittest.main() 參數問題?

2021/10/05 下午 05:12
Debugging and Testing
陳柏翰
觀看數:50
回答數:1
收藏數:0

各位老師同學好 小弟在做今天作業的時候碰到了點問題 ![擷取.PNG](http://kwassistfile.cupoy.com/0000017C4FB7D14C000000026375706F795F72656C656173655155455354/1632821348201/large) 但是在把 unittest.main() 這行加上這些參數後 unittest.main(argv=[''], verbosity=2, exit=False) 問題就解決了 另外上圖問題只發生在 jupyter notebook 在 spyder 內是沒有這問題的 小弟想詢問 unittest.main(argv=[''], verbosity=2, exit=False) 這三個參數代表甚麼呢?

回答列表

  • 2021/10/18 下午 00:30
    Chu Jia Ping
    贊同數:2
    不贊同數:0
    留言數:1

    ## 1. argv=[''] 由於 unittest.main() 屬於 command-line 的程式碼 預設會去抓使用者在 terminal 輸入的參數(使用 sys.argv) 例如下方的 my_test 就是 argv ``` $ my_unittest.py my_test ``` 但是當使用 Jupyter 的時候沒有輸入參數 unittest.main() 抓不到參數時就會出現你圖中的 AttributeError 所以帶入一個空字串參數 `argv=['']` 能讓程式在 Jupyter 執行時不會 error ## 2. exit=False 這也跟 Jupyter 有關,原因也是和第一點差不多 (unittest.main() 預設使用 sys.exit() 來關閉 Python 並顯示測試結果) 設定 `exit=False` 可以避免 jupyter kernel 被意外關閉 ## 3. verbosity=2 這個參數只是調整「測試結果顯示的詳細程度」 下方是 verbosity=1 (預設) 和 verbosity=2 的輸出結果差異比較 ```python unittest.main(argv=[''], verbosity=1, exit=False); # F # ====================================================================== # FAIL: test_foo (__main__.TestFoo) # ... unittest.main(argv=[''], verbosity=2, exit=False); # test_foo (__main__.TestFoo) ... FAIL # ====================================================================== # FAIL: test_foo (__main__.TestFoo) # ... ```