我想模擬我們的git包裝器,以便我們可以測試它。我打算使用mockproc python庫,它提供了用提供的腳本來模擬任何進程名稱的功能。它的作品是這樣的 -使用python裝飾器來裝飾功能的一部分
self.scripts.append('process-name', returncode=0, stdout="output to process")
with self.scripts:
run_and_handle_result()
我需要添加一個裝飾層,以便我可以做一些額外的事情,如處理重試。我想是這樣的 -
@mockproc('git') # tells that we are mocking git
def test_something(mock_proc):
mock_proc.set_script("sleep (60)")
# Run some git command
mockproc.check_exit_signal()
的問題是我希望我的裝飾處理with self.scripts
部分。所以我想要的是裝飾器運行該函數,將進程名稱設置爲git,這很簡單。然後運行測試函數,添加腳本並在git命令周圍添加with self.script
,然後恢復該函數。
有沒有辦法做到這一點?是一個裝飾者不好的方式來實現它?這不是一個美容要求。我需要這個,因爲在我的一些命令中有重試邏輯,爲此我需要提供多個腳本來進行mockproc並多次運行。
你還需要這個嗎?我認爲代碼片段太短以至於無法完成所有您想要完成的任務 - 您能否舉一些說明性示例:在測試環境之外應該做什麼,以及測試環境中的預期行爲是什麼?我相信你想要的東西可以通過上下文猴子補丁來實現,但我必須更好地理解它 – jsbueno