我寫了下面的函數,它是在my_script.py單元測試用於測試目的的命令行參數:Python的單元測試:模仿
def _parse_args():
parser = argparse.ArgumentParser(
description='Script to configure appliance.'
)
parser.add_argument('--config_file',
help='Path to a JSON configuration file')
print parser.parse_args()
return parser.parse_args()
我想創建一個單元測試來模擬命令行提示:
myscript.py --config_file test.json
這是我到目前爲止有:
def test_parse_arg_test_config(self):
test ={
"name": "test_name",
"category": "test_category"
}
# set the fake command line prompt to be:
# myscript.py --config_file test
# (where test is defined above)
self.assertEquals(my_script._parse_args().config_file, test)
這顯然是不全面的,但I W因爲想知道如果我正在接近這個正確的方式,因爲_parse_args
沒有接受任何輸入,我不知道用另一種方式來模仿一個配置文件被傳遞給函數。
你應該做的是模擬ArgumentParser,所以你得到'parse_args'返回你想用來測試你的代碼的數據結構。 [Mock](http://www.voidspace.org.uk/python/mock/getting-started.html)文檔相當不錯,有幾個例子可以幫助你。 – idjaw
我相信你可以做'parser.parse_args([「my_script.py」,「--config_file」,「test」])' – zondo
@zondo我試過了,但_parse_args函數本身並不包含任何參數。這會產生以下錯誤:「TypeError:_parse_args()不帶任何參數(給出1)」# – Catherine