最近研究透過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 程式碼
1 2 3 4 5 6 |
Python.efi abc.py #呼叫python code if not %lasterror% == 3 then echo Error code is 3. else echo OK! Others. endif |
再寫 python code
abc.py 程式碼
法1: 直接透過 exit(n) 離開
1 2 |
print ('Leave with lasterror 3') exit(3) |
法2: 透過python內建的 sys module的 sys.exit(n)
1 2 3 |
import sys print ('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 程式碼
1 2 |
python abc.py #呼叫python code echo %errorlevel% |
再寫 python code
abc.py 程式碼
法1: 直接透過 exit(n) 離開
1 2 |
print ('Leave with errorlevel 2') exit(2) |
法2: 透過python內建的 sys module的 sys.exit(n)
1 2 3 |
import sys print ('Leave with errorlevel 2') sys.exit(2) |
然後執行test.bat , 確認回傳的errorlevel是否為2