2015-02-09 119 views
0

我想通過調用另一個具有輸入和輸出文件的python腳本來使用subprocess_check.call()自動化一些測試用例。我有約。 10個輸入文件。例如,當我開始測試時,第一個和第二個文件已成功測試,但在第三個文件中出現錯誤,腳本終止。我想要的是,我如何從終止它的位置運行我的腳本?我不想從頭開始。我只是想從我遇到錯誤的情況下繼續我的測試。糾正輸入文件後,從這個文件開始,我想運行腳本直到結束。Python subprocess.check_call終止並從它終止的地方開始

任何想法?

回答

0

所以,這不是一個涉及代碼的問題,所以你會得到一個通用的答案,而不涉及代碼。

解決您的問題需要您保持協議。這個協議必須在你的測試過程的一生中存活

因此,必須有一些地方,你可以寫到關於你的測試的狀態,這個地方必須確保持久性。那可能是什麼?對,例如,文件系統。跟蹤測試的最簡單的地方就是文件系統。

以下是一個非常簡單的例子,您可能想要實現這一點:對於每個成功的測試用例,將文件寫入當前工作目錄,指示此測試成功。然後,在你的測試過程調用一個特定的測試之前,讓它檢查這個文件的存在,如果找到這個文件,就讓它跳過測試。假設您的輸入文件具有不同的基本名稱(例如AB,...)。然後,您可以在當前工作目錄中使用名爲B.success的文件來表明不需要再進行測試。

+0

感謝這個偉大的解釋只會用它來編譯的二進制文件,!我明白了。 – user3013449 2015-02-09 13:56:52

+0

如果答案有幫助,你可能要考慮投票/檢查它。謝謝! – 2015-02-09 16:02:07

-1

我想我沒有使用這個任務的子進程的準系統答案(除非你真的必須)。

假設腳本測試的形式是

script1.py

import sys 

def main1(args): 
    #do something awesome with args 
    return some_cool_value 

if __name__ == "__main__": 
    filename = sys.argv 
    main1(filename) 

那麼你正在使用子當你可以做的東西來評價,它的輸出,這樣做以下內容:

main_test.py

from script1 import main1 # you may want to rename main is you have loads of scripts 

def test__main(filenames): 
    for name in filenames: 
      try: 
       result1 = main1(name) 
       # do something with result 
       print "file "+ name+ " processed successfully!" 
      except: 
       print "file "+ name+ " not processed successfully!" 



if __name__ == "__main__": 

    filenames = sys.argv 
    main(fienames) 

並記錄哪些文件在處理完成後會成功,所以如果有必要,您可以在正確的位置重新啓動。

我想象中的工作流程會是這樣的:

python main_test.py passingfile1 corruptedfile2 

>>> file passingfile1 processed successfully 
>>> file corruptedfile2 not successfully processed 

然後,你可以重新運行你corruptedfile2腳本。

一般來說,我儘量避免使用子進程調用Python腳本,並且在沒有其他接口,可以

+0

你的答案不提供*自動*跳過一組測試的解決方案。手動評估日誌文件和手動調整Python腳本不是有效的解決方案。你也應該從語義上清理你的代碼:'filename = sys.argv',真的嗎?錯字:'主(fienames)'。此外,您應該明白,在不同流程中運行測試可確保測試在某種程度上**解耦** - 在許多情況下,這可能是一個重要要求,您無法判斷他/她的要求。 – 2015-02-09 14:21:11

+0

如果這很重要,您可以在不使用子流程模塊的情況下產生新的流程。使用subprocess模塊​​運行現有的python腳本似乎很瘋狂。我懷疑我應該清理代碼,但實際上它只是一個想法的演示。按照您的建議編輯上述方法將通過的測試寫入文件非常容易 – user3684792 2015-02-09 15:58:22