最近研究透過python可以部份取代Windows/UEFI的batch腳本語言, 因為原本的windows的腳本語言不易閱讀, 也不易維持更新, 許多高階程式語言的特性也很缺乏, 例如模組化 modularity, 例外處理, …等! 所以automation如果使用原本預設的windows/uefi的nsh腳本語言, 會有土法煉鋼的感覺, 不夠方便使用
環境1: UEFI介面底下
做產線UEFI自動化測試會透過 nsh file去呼叫執行檔, 這些執行檔會在程式結束給予一個離開的代碼(Exit Code), 而原先的 nsh file裡面再根據這個的 lasterror變數做去判定這執行檔是pass or fail, 所以要導入python到自動化測試流程的話, 要先確定是否可以一樣用 lasterror判定結果
先寫 nsh file
test.nsh 程式碼
Python.efi abc.py #呼叫python codeif not %lasterror% == 3 then echo Error code is 3.else echo OK! Others.endif
再寫 python code
abc.py 程式碼
法1: 直接透過 exit(n) 離開
print ('Leave with lasterror 3')exit(3)
法2: 透過python內建的 sys module的 sys.exit(n)
import sysprint ('Leave with lasterror 3')sys.exit(3)
然後執行test.nsh , 確認回傳的lasterror是否為3
環境2: Windows介面底下
做產線自動化測試會透過 batch file去呼叫 exe/bat 等執行檔, 這些執行檔會在程式結束給予一個離開的代碼(Exit Code), 而原先的batch file裡面再根據這個的 errorlevel變數做去判定這執行檔是pass or fail, 所以要導入python到自動化測試流程的話, 要先確定是否可以一樣用 errorlevel 判定結果
先寫 batch file
test.bat 程式碼
python abc.py #呼叫python codeecho %errorlevel%
再寫 python code
abc.py 程式碼
法1: 直接透過 exit(n) 離開
print ('Leave with errorlevel 2')exit(2)
法2: 透過python內建的 sys module的 sys.exit(n)
import sysprint ('Leave with errorlevel 2')sys.exit(2)
然後執行test.bat , 確認回傳的errorlevel是否為2
沒有留言:
張貼留言