获取路径&目录添加文件
在自动化测试的过程,考虑到工程文件的移动或者在其他人的工作环境中运行,所以我们的路径要灵活,不能把路径写死。
推荐使用Python的内置模块OS
参照图
import unittest from common.HTMLTestRunner_cn import HTMLTestRunner import os # 当前脚本路径 curPath = os.path.realpath(__file__) print(curPath) # 当前脚本文件夹名称 proPath = os.path.dirname(curPath) print(proPath) #测试用例的路径 startCase = os.path.join(proPath, "test_case") print(startCase) # 测试报告的路径 reportPath = os.path.join(proPath, "report", "report.html") print(reportPath)
路径的操作
#获取当前目录 print(os.getcwd()) print(os.path.abspath(os.path.dirname(__file__))) #获取上级目录 print(os.path.abspath(os.path.dirname(os.path.dirname(__file__)))) print(os.path.abspath(os.path.dirname(os.getcwd()))) print(os.path.abspath(os.path.join(os.getcwd(), ".."))) #获取上上级目录 print(os.path.abspath(os.path.join(os.getcwd(), "../..")))
获取最新文件
测试过程中我们会多次执行生成多次的测试报告,那么如何获取最新的测试报告呢?
案例图:
如图,report下有许多的测试报告
import os # 当前脚本文件夹名称 proPath = os.path.dirname( os.path.realpath(__file__)) print(proPath) def get_newest_report(report_path): #列举report_path目录下的所有文件(名),结果以列表形式返回 lists =os.listdir(report_path) # sort按key的关键字进行升序排序,lambda的入参fn为lists列表的元素,获取文件的最后修改时间,所以最终以文件时间从小到大排序 # 最后对lists元素,按文件修改时间大小从小到大排序。 # 获取最新文件的绝对路径,列表中最后一个值,文件夹+文件名 #lists.sort(key=lambda fn: os.path.getmtime(os.path.join(report_path, fn))) #两种方法排序 lists.sort(key=lambda fn: os.path.getmtime(report_path+"\\"+fn)) #两种方法排序 print(u'最新测试生成的报告: '+lists[-1]) report_file = os.path.join(report_path, lists[-1]) return report_file if __name__ == "__main__": report_path = os.path.join(proPath, "report") #报告所在目录(report_path) report_file = get_newest_report(report_path) #返回report_path下最新的文件
os.path.getmtime与os.path.getctime的区别:
import os import time file = 'C:\\Users\Administrator\PycharmProjects\\unittest_lianxi' print(os.path.getatime(file))# 输出最近访问时间 print(os.path.getctime(file))# 输出文件创建时间 print(os.path.getmtime(file))# 输出最近修改时间 print(time.gmtime(os.path.getmtime(file)))# 以struct_time形式输出最近修改时间 print(os.path.getsize(file)) # 输出文件大小(字节为单位) print(os.path.abspath(file)) # 输出绝对路径 print(os.path.normpath(file) )