同样的,在使用pytest进行自动化测试时,需要将实时日志打印出来,而不是跑完后才在报告中出结果。

不过,好在pytest在3.3版本开始,就支持这一功能了,而不用再像nose一样,再去装第三方插件。

网上也有相关实时的日志输入说明,但我尝试后,不是我想要的,比如:pytest输出Log

看看我们下面这样一段代码,以unittest模式写的:

#coding:utf-8

'''Created on 2017年8月31日

@author: huzq'''

from __future__ importprint_functionimportpytestfrom unittest importTestCasefrom selenium importwebdriverimportlogging,syslog= logging.getLogger(__name__)classTestClass(TestCase):

@classmethoddefsetUpClass(cls):

log.info('setup_class()')

cls.driver=webdriver.Firefox()

cls.driver.get("http://www.baidu.com")

log.info("xxxxxxxxxxxxxxx")

@classmethoddefteardown_class(cls):

log.info('teardown_class()')defsetUp(self):

log.info('\nsetup_method()')

self.addCleanup(self.screen_shot)defscreen_shot(self):

log.info("yyyyyyyyyyyyyy")

log.info("sereen_shot")defqqq(self):

log.info("xxxxxxxxxxxqqqq")assert 4==5

#def teardown_method(self, method):

deftearDown(self):

log.info("ffjiafuiodafdfj___teardown")

@pytest.mark.slowdeftest_7(self):importtime

time.sleep(10)

log.info('- test_7()')

@pytest.mark.qqdeftest_4(self):importpdb;pdb.set_trace()

self.result=self.addCleanup(self.qqq)

log.info('- test_4()')deftest_5(self):

log.info('- test_4()')assert 4==5

如果没有加日志实时输出会是怎么样的,如下:

可以看出,日志在过程中没有实时输出,在实际跑项目录,这个有点不太好看。

解决:

看看pytest是怎么解决的呢。

首先pytest是从pytest.ini中读取log_cli配置的,默认是关闭的。如上图中显示,我们的pytest.ini文件是空的

再看看pytest -h文件:

关于log的help有以下:

--no-print-logs disable printing caught logs on failed tests.--log-level=LOG_LEVEL

logging level used by the logging module--log-format=LOG_FORMAT

log format as used by the logging module.--log-date-format=LOG_DATE_FORMAT

log date format as used by the logging module.--log-cli-level=LOG_CLI_LEVEL

cli logging level.--log-cli-format=LOG_CLI_FORMAT

log format as used by the logging module.--log-cli-date-format=LOG_CLI_DATE_FORMAT

log date format as used by the logging module.--log-file=LOG_FILE path to a file when logging will be written to.--log-file-level=LOG_FILE_LEVEL

log file logging level.--log-file-format=LOG_FILE_FORMAT

log format as used by the logging module.--log-file-date-format=LOG_FILE_DATE_FORMAT

log date format as used by the logging module.

View Code

然后你还会发现一行:

[pytest] ini-options in the first pytest.ini|tox.ini|setup.cfg file found:

所以,有两种方法解决

1) 在当前文件夹下写pytest.ini或tox.ini或setup.cfg文件,然后将日志相关写在里面,如下:

[pytest]

log_cli= 1log_cli_level=INFO

log_cli_format= %(asctime)s [%(levelname)8s] %(message)s (%(filename)s:%(lineno)s)

log_cli_date_format=%Y-%m-%d %H:%M:%S

这时就可以正常打印日志出来。

2)直接用pytest -o方式重写,这个功能在pytest 3.4之后才实现,如下

pytest pytest_lean2.py -o log_cli=true -o log_cli_level=INFO

结果如下:

update更新下:

实际在项目过程中,实时日志需要时间及文件名还有行号,可在后面加这样的参数:

-vv -o log_cli=true -o log_cli_level=INFO --log-date-format="%Y-%m-%d %H:%M:%S" --log-format="%(filename)s:%(lineno)s %(asctime)s %(levelname)s %(message)s"

结果就会像下面这样

python实时读取日志并打印关键字怎么实现_python pytest测试框架介绍五---日志实时输出...相关推荐

  1. python 日志框架_python pytest测试框架介绍五---日志实时输出

    同样的,在使用pytest进行自动化测试时,需要将实时日志打印出来,而不是跑完后才在报告中出结果. 不过,好在pytest在3.3版本开始,就支持这一功能了,而不用再像nose一样,再去装第三方插件. ...

  2. python pytest测试框架介绍四----pytest-html插件html带错误截图及失败重测机制

    一.html报告错误截图 这次介绍pytest第三方插件pytest-html 这里不介绍怎么使用,因为怎么使用网上已经很多了,这里给个地址给大家参考,pytest-html生成html报告 今天在这 ...

  3. Python编程必不可少的pytest测试框架

    进行编程测试重要的是为了更高效的完成功能的实现. pytest是基于unittest实现的第三方测试框架,比 unittest 更加的简洁.高效,并且可以完美兼容 unittest 的测试代码,无需对 ...

  4. python文件读取方法read(size)的含义是_Python file read()方法

    在计算机中,文件包括了文档.图片.视频.程序组件等,每个类型的文件都有不同的作用或功用.例如一个程序通常由主程序.动态库.配置文件等组成,这些也是文件,起到支持程序运行的作用.想要使用文件,第一个操作 ...

  5. python pytest测试框架(一)

    目录 一.安装 二.第一个测试例子 三.pytest参数 1.-K EXPRESSION 3.--maxfail=num 4.-m MARKEXPR 5. -v, --verbose 6.-q, -- ...

  6. Python pytest测试框架详解

    pytest介绍: pytest是一个非常成熟的全功能的Python测试框架: 1.简单灵活,容易上手 2.支持参数化 3.测试用例的skip和xfail,自动失败重试等处理 4.能够支持简单的单元测 ...

  7. python 渗透框架_Python渗透测试框架:PytheM

    PytheM是一个Python渗透测试框架.它只能在osnGNU/Linux OS系统上运行. 安装$sudo apt-get update $sudo apt-get install libasou ...

  8. Java日志框架 -- 日志框架介绍、日志门面技术、JUL日志(JUL架构、JUL入门示例、JUL日志级别、JUL日志的配置文件)

    1. 日志的概念 日志文件是用于记录系统操作事件的文件集合,可分为事件日志和消息日志.具有处理历史数据.诊断问题的追踪以及理解系统的活动等重要作用. 2. Java日志框架 问题: 控制日志输出的内容 ...

  9. pytest测试框架_聊聊 Python 的单元测试框架(三):最火的 pytest

    本文首发于 HelloGitHub 公众号,并发表于 Prodesire 博客. 一.介绍 本篇文章是<聊聊 Python 的单元测试框架>的第三篇,前两篇分别介绍了标准库 unittes ...

最新文章

  1. 一文详述Attention最新进展
  2. Linux 下杀毒软件 CPU 占用率为何持续升高?
  3. go和python计算字节数组sha1
  4. mysql text查找性能_MySQL TEXT字段性能
  5. SAP CRM webclient ui drop down list key mode
  6. 如何为Kubernetes实现原地升级
  7. 计算机小知识分享,分享几小个计算机操作技巧
  8. Unity Shader播放序列帧动画
  9. .NET开源项目介绍及资源推荐:单元测试
  10. 用强化学习来玩Atari游戏(基于Tensorflow的深度Q学习模型)
  11. 如何比较两条回归直线
  12. Heartbeat安装部署
  13. 天猫直通车的相关定义
  14. 游戏开发unity编辑器扩展知识系列:进度条显示EditorUtility.ProgressBar
  15. 安利一个自动求导网站
  16. 7-62 贴“福”字
  17. 万物互联的灵鹫山,取经的华为
  18. 巧解决阿里云虚拟主机免费版被DDOS攻击问题
  19. webstorm 扩大内存
  20. 13 【操作mysql数据库】

热门文章

  1. python 读取地震道头数据_【Python】OGR库(1):读取矢量数据
  2. centos sudo不能运行_如何在Linux中配置sudo访问权限
  3. Windows10配置CUDA10.0+cudnn7.5.1
  4. 2.MySQL中的索引
  5. 10-Linux与windows文件互传-pscp坑---- 'pscp' 不是内部或外部命令,也不是可运行的程序或批处理文件...
  6. mongodb的返回(2)
  7. [VirtaulBox]网络连接设置
  8. [CLR via C#]16. 数组
  9. MySQL数据库开启root用户远程登录
  10. MySQL 8.0 error 2059: Authentication plugin 'caching_sha2_password' cannot be loaded