2016-03-25 25 views
0

我想測試傳遞給我的代碼的選項/參數及其預期結果。我正在使用Optparse來接受這些論點。現在我測試代碼只是執行用於測試的TestCase Optparse錯誤/缺失參數

parser.error("Some message")

當我缺少一個說法,或者如果我通過一個壞的說法。

一旦輸入一個錯誤的參數。我該如何測試?我使用unittest.TestCase內哪個方法來斷言parser.error()發生?

+1

[*「在任何情況下,'optparse'處理錯誤的方式相同:它打印程序的使用信息和錯誤信息到標準錯誤,並退出錯誤狀態爲2.「(*)(https://docs.python.org/2/library/optparse.html#how-optparse-handles-errors) - 您可能無法測試此代碼,因爲測試中的代碼退出Python。 – jonrsharpe

+0

部分偏離主題(不使用optparse),但我使用'click'包,它提供'從click.testing導入CliRunner'。這可以用來調用命令並評估結果。更多內容參見[click.testing文檔](http://click.pocoo.org/5/testing/)。 –

回答

0

你應該模擬模塊上注意:

import mock 
import unittest 


class TestCase(unittest.TestCase): 

    def test_parser(self): 
     with mock.patch('path.to.your.function') as error_mock: 
      call_your_code() 
      self.assertEqual(error_mock.called, True)