获取路径&目录添加文件

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

推荐使用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) )

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. 8.5 C++输入相关的成员函数

    参考:http://www.weixueyuan.net/view/6411.html 总结: 输入相关的常用的类成员函数. 1) get函数有三种重载形式:不带参数.带一个参数和带有三个参数. 不带 ...

  2. 一月分四周的JAVA实现方法

    需求:给定任意一个月,如何按照中国周的习惯,把一个月分成四个时间段 (1)以自然周为划分依据 (2)不能跨月 (3)把首尾自然周,天数较少的合并到其最近的自然周里面 (4)最后结果应该是吧一个月分成四 ...

  3. pip 安装 nexmo

    pip install nexmo报错 是因为缺少 libffi-devel 需要    yum install libffi-devel 然后再执行  pip install nexmo 即可成功

  4. nginx 支持的命令行参数

    Command-line parameters 命令行参数 nginx supports the following command-line parameters: nginx支持以下命令行参数 - ...

  5. 学习animejs

    1.安装方式 (1)npm install animejs 2.引入 import anime from 'animejs' 3.使用 (anime({ targets: 'div', transla ...

  6. Linux基础知识_Shell编程笔记

    以下是一些 常用功能 , 基于 centos 6.5 x64 # cp /etc/localtime /etc/localtime.org # rm /etc/localtime # ln -s /u ...

  7. Linux系统-tcpdump常用抓包命令

    主要语法 过滤主机/IP: tcpdump -i eth1 host 172.16.7.206 抓取所有经过网卡1,目的IP为172.16.7.206的网络数据 过滤端口:  tcpdump -i e ...

  8. 在eclipse中启动java程序的时候,每次都会在一个未设置断点的源码里面,卡断点

    可以通过取消这个勾选框,来阻止代码在未设置断点的地方停止 具体位置在:Preferences--Java--Debug

  9. junit断言和junit注释assert

    JUnit - 使用断言 断言 所有的断言都包含在 Assert 类中 public class Assert extends java.lang.Object 这个类提供了很多有用的断言方法来编写测 ...

  10. SQL-存储过程-010

    什么是存储过程? 可以理解为数据库中的方法,与C#中的方法一样,具有参数和返回值: 存储过程的优点? 提高运行速度:存储过程在创造是进行编译,以后运行存储过程都不需要再进行编译,极大化的提高了数据库的 ...