获取路径&目录添加文件

在自动化测试的过程,考虑到工程文件的移动或者在其他人的工作环境中运行,所以我们的路径要灵活,不能把路径写死。

推荐使用Python的内置模块OS

参照图

  1. import unittest
  2. from common.HTMLTestRunner_cn import HTMLTestRunner
  3. import os
  4. # 当前脚本路径
  5. curPath = os.path.realpath(__file__)
  6. print(curPath)
  7. # 当前脚本文件夹名称
  8. proPath = os.path.dirname(curPath)
  9. print(proPath)
  10. #测试用例的路径
  11. startCase = os.path.join(proPath, "test_case")
  12. print(startCase)
  13. # 测试报告的路径
  14. reportPath = os.path.join(proPath, "report", "report.html")
  15. print(reportPath)

 路径的操作

  1. #获取当前目录
  2. print(os.getcwd())
  3. print(os.path.abspath(os.path.dirname(__file__)))
  4. #获取上级目录
  5. print(os.path.abspath(os.path.dirname(os.path.dirname(__file__))))
  6. print(os.path.abspath(os.path.dirname(os.getcwd())))
  7. print(os.path.abspath(os.path.join(os.getcwd(), "..")))
  8. #获取上上级目录
  9. print(os.path.abspath(os.path.join(os.getcwd(), "../..")))

获取最新文件

测试过程中我们会多次执行生成多次的测试报告,那么如何获取最新的测试报告呢?

案例图:

如图,report下有许多的测试报告

  1. import os
  2. # 当前脚本文件夹名称
  3. proPath = os.path.dirname( os.path.realpath(__file__))
  4. print(proPath)
  5.  
  6. def get_newest_report(report_path):
  7. #列举report_path目录下的所有文件(名),结果以列表形式返回
  8. lists =os.listdir(report_path)
  9. # sort按key的关键字进行升序排序,lambda的入参fn为lists列表的元素,获取文件的最后修改时间,所以最终以文件时间从小到大排序
  10. # 最后对lists元素,按文件修改时间大小从小到大排序。
  11. # 获取最新文件的绝对路径,列表中最后一个值,文件夹+文件名
  12. #lists.sort(key=lambda fn: os.path.getmtime(os.path.join(report_path, fn))) #两种方法排序
  13. lists.sort(key=lambda fn: os.path.getmtime(report_path+"\\"+fn)) #两种方法排序
  14. print(u'最新测试生成的报告: '+lists[-1])
  15. report_file = os.path.join(report_path, lists[-1])
  16. return report_file
  17.  
  18. if __name__ == "__main__":
  19. report_path = os.path.join(proPath, "report") #报告所在目录(report_path)
  20. report_file = get_newest_report(report_path) #返回report_path下最新的文件

os.path.getmtime与os.path.getctime的区别:

  1. import os
  2. import time
  3. file = 'C:\\Users\Administrator\PycharmProjects\\unittest_lianxi'
  4. print(os.path.getatime(file))# 输出最近访问时间
  5. print(os.path.getctime(file))# 输出文件创建时间
  6. print(os.path.getmtime(file))# 输出最近修改时间
  7. print(time.gmtime(os.path.getmtime(file)))# struct_time形式输出最近修改时间
  8. print(os.path.getsize(file)) # 输出文件大小(字节为单位)
  9. print(os.path.abspath(file)) # 输出绝对路径
  10. print(os.path.normpath(file) )

Python 内置os模块的简单实用的更多相关文章

  1. Python内置OS模块用法详解

    大家好,从今天起早起Python将持续更新由小甜同学从初学者的角度学习Python的笔记,其特点就是全文大多由新手易理解的代码与注释及动态演示.刚入门的读者千万不要错过! 很多人学习python,不知 ...

  2. Python内置标准模块

    time 模块 1 >>> import time 2 >>> time.time() 3 1491064723.808669 4 >>> # t ...

  3. python内置re模块全面实战

    目录 一:取消转义 二:python内置模块之re模块 三:常用方法 findall search match 简便 四:常用方法 finditer 匹配文件多情况 五:切割 替换 内置模块 六:分组 ...

  4. $Django 发送邮件--django封装模块和python内置SMTP模块

    一 使用SMTP模块发送邮件 import smtplib from email.mime.text import MIMEText from email.header import Header m ...

  5. Python内置logging模块

    最近调试Python代码比较多,发现logging模块很好用. 我的用法如下: import logging logging.basicConfig(level=logging.INFO, forma ...

  6. csv文件已经python内置csv模块

    csv(Comma Separated Value,即逗号分隔值),文件以纯文本形式存储表格数据(数字和文本).可以用excel打开,并自动将每个逗号隔开的数据作为一列在excel中显示. pytho ...

  7. Python内置GUI模块Tkinter的几点笔记

    组件属性,用法 组件位置 更多

  8. day25 内置常用模块(四): 模块和包

    阅读目录: 模块 import from xxx import xxx 包 import from xxx import xxx    from xxx  import *    __init__.p ...

  9. 浅谈Python内置对象类型——数字篇(附py2和py3的区别之一)

    Python是一门面向对象的编程设计语言,程序中每一样东西都可以视为一个对象.Python内置对象可以分为简单类型和容器类型,简单类型主要是数值型数据,而容器类型是可以包含其他对象类型的集体,如序列. ...

随机推荐

  1. 并发,同步锁,Runnable,Callable,Future

    1.并发: 在我们的操作系统中,同一个时间点,有N个线程都想访问同一个程序!但是cpu只能运行一个! 这种情况就是! 多个线程在 同一个时间点 访问同一个资源,会引发线程不安全的问题! 怎么解决这种不 ...

  2. RAID的基本介绍

    一.传统磁盘的劣势 影响计算机性能的组件一般包括:CPU.主板总线IO.内存IO.硬盘IO.网卡IO.现代处理器性能已经很高了,但是计算机整体IO性能较弱,严重影响了计算机性能 现代的计算机总线.内存 ...

  3. windows下安装rabbitmq的步骤详解

    (仅作为个人的备忘记录) Rabbit MQ 是建立在强大的Erlang OTP平台上,因此安装Rabbit MQ的前提是安装Erlang.通过下面两个连接可以下载安装最新的版本: 下载并安装Eral ...

  4. find -exec 批量使用方法

    查找当前目录批量文件内容后复制到指定目录当中 find . -type f -name "*.log" -exec cp {} /目标目录/ \;

  5. Linux的相关概念

    1 Linux的相关概念 1.1 什么是操作系统? 操作系统(英语:operating system,缩写:OS)是管理计算机硬件与软件资源的计算机程序,同时也是计算机系统的内核与基石.操作系统需要处 ...

  6. numpy.where() 用法详解

    numpy.where (condition[, x, y]) numpy.where() 有两种用法: 1. np.where(condition, x, y) 满足条件(condition),输出 ...

  7. Vue - v-for 的延伸用法

    1.v-for 合并标签template 一起使用 2.vue.set 1.v-for 合并标签template 一起使用 之前在设计table的时候,如果使用v-for ,会直接放在tr里面,一次产 ...

  8. 基于Verilog的带FIFO写入缓冲的串口发送接口封装

    一.模块框图及基本思路 tx_module:串口发送的核心模块,详细介绍请参照前面的“基于Verilog的串口发送实验” fifo2tx_module:当fifo不为空时,读取fifo中的数据并使能发 ...

  9. Curl追踪请求延时问题

    背景原因:测试环境发现一个连接内网访问和外网访问延迟差别很大,内网访问很快.外网访问很慢.于是我们用curl来诊断问题所在的区域! 命令如下: curl -o /dev/null -s -w %{ti ...

  10. 实验楼 MySQL 基础课程 挑战:搭建一个简易的成绩管理系统的数据库

    传送门:https://www.shiyanlou.com/courses/running 介绍 现需要构建一个简易的成绩管理系统的数据库,来记录几门课程的学生成绩.数据库中有三张表分别用于记录学生信 ...