一般在代碼中涉及到操作文件時,最好使用文件的相對目錄,這樣在你的程序遷移到別人的電腦時,可以保證不會出現文件讀取異常的錯誤(另外,自動化測試時用例的讀取也要用相對目錄)
例子1
假如工程文件的目錄結構如下
main中存放的是整個程序的運行文件
test_case存放的是所有的測試用例
那么在run_report.py中需要指明測試用例所在的位置,需要用到os模塊
os.path.abspath 表示 獲得文件當前路徑
os.path.dirname 表示 獲得文件的父目錄
可以按照如下方式
import os root_dir = os.path.dirname(os.path.abspath('.')) # 獲取當前文件(這里是指run_report.py)所在目錄的父目錄的絕對路徑,也就是項目所在路徑E:\DDT_Interface case_dir = root_dir + '/test_case/' # 根據項目所在路徑,找到用例所在的相對項目的路徑 print(root_dir) print(case_dir)
執行結果如下
D:\worksoft\python36\python.exe E:/DDT_Interface/main/run_report.py E:\DDT_Interface E:\DDT_Interface/test_case/ Process finished with exit code 0
例子2
如果運行主文件直接在工程文件下,沒有一個單獨的目錄了(因為只有一個文件,沒必要再單獨創建一個目錄)
run_all_case.py中關於讀取用例的寫法如下,只需用os.path.abspath('.')來獲取當前文件所在的路徑即可,再根據當前文件路徑定位用例的路徑
import os root_dir = os.path.abspath('.') # 獲取當前文件所在目錄,也就是"審批系統"所在目錄,即"E:\shenpi\審批系統" case_path = root_dir + "/test_case" # 獲取case所在目錄,即"E:\shenpi\審批系統\test_case" print(case_path)
運行結果
D:\worksoft\python36\python.exe E:/shenpi/審批系統/run_all_case.py E:\shenpi\審批系統/test_case Process finished with exit code 0