pytest文档50-命令行参数--durations统计用例运行时间
前言
写完一个项目的自动化用例之后,发现有些用例运行较慢,影响整体的用例运行速度,于是领导说找出运行慢的那几个用例优化下。
--durations 参数可以统计出每个用例运行的时间,对用例的时间做个排序。
--durations=N
pytest -h 查看命令行参数,关于 --durations=N 参数的使用方式
>pytest -h
reporting:
--durations=N show N slowest setup/test durations (N=0 for all).
当 N=0 的时候显示全部用例的运行时间
--durations=0
先写几个pytest的用例,在用例里面加sleep时间,这样方便看到每个用例运行的持续时间
import pytest
import time
# 作者-上海悠悠 QQ交流群:717225969
# blog地址 https://www.cnblogs.com/yoyoketang/
@pytest.fixture()
def set_up_fixture():
time.sleep(0.1)
yield
time.sleep(0.2)
def test_01(set_up_fixture):
print("用例1")
time.sleep(1.0)
def test_02(set_up_fixture):
print("用例2")
time.sleep(0.6)
def test_03(set_up_fixture):
print("用例3")
time.sleep(1.2)
def test_04(set_up_fixture):
print("用例4")
time.sleep(0.3)
def test_05(set_up_fixture):
print("用例5")
time.sleep(2.3)
当 N=0 的时候显示全部用例的运行时间
>pytest test_dur.py --durations=0 -v
============================= test session starts =============================
collected 5 items
test_dur.py::test_01 PASSED [ 20%]
test_dur.py::test_02 PASSED [ 40%]
test_dur.py::test_03 PASSED [ 60%]
test_dur.py::test_04 PASSED [ 80%]
test_dur.py::test_05 PASSED [100%]
=========================== slowest test durations ============================
2.30s call test_dur.py::test_05
1.20s call test_dur.py::test_03
1.00s call test_dur.py::test_01
0.60s call test_dur.py::test_02
0.30s call test_dur.py::test_04
0.20s teardown test_dur.py::test_05
0.20s teardown test_dur.py::test_01
0.20s teardown test_dur.py::test_02
0.20s teardown test_dur.py::test_03
0.20s teardown test_dur.py::test_04
0.10s setup test_dur.py::test_03
0.10s setup test_dur.py::test_01
0.10s setup test_dur.py::test_02
0.10s setup test_dur.py::test_05
0.10s setup test_dur.py::test_04
========================== 5 passed in 7.05 seconds ===========================
用例运行的时候会经历3个阶段:setup,call,teardown。call就是测试用例,setup和teardown就是用例的fixture部分。
--durations=3
如果我们只需要筛选出运行时间最慢的3条用例,可以设置--durations=3
>pytest test_dur.py --durations=3 -v
============================= test session starts =============================
collected 5 items
test_dur.py::test_01 PASSED [ 20%]
test_dur.py::test_02 PASSED [ 40%]
test_dur.py::test_03 PASSED [ 60%]
test_dur.py::test_04 PASSED [ 80%]
test_dur.py::test_05 PASSED [100%]
========================== slowest 3 test durations ===========================
2.30s call test_dur.py::test_05
1.20s call test_dur.py::test_03
1.00s call test_dur.py::test_01
========================== 5 passed in 7.00 seconds ===========================
这样就可以对运行慢的用例针对性优化。
pytest文档50-命令行参数--durations统计用例运行时间的更多相关文章
- pytest文档52-命令行参数--setup-show查看fixture的执行过程
前言 使用命令行运行 pytest 用例的时候,看不到 fixture 的执行过程. 如果我们想知道fixture的执行过程和先后顺序,可以加上 --setup-show 命令行参数,帮助查看 fix ...
- pytest文档49-命令行参数--tb的使用
前言 pytest 使用命令行执行用例的时候,有些用例执行失败的时候,屏幕上会出现一大堆的报错内容,不方便快速查看是哪些用例失败. --tb=style 参数可以设置报错的时候回溯打印内容,可以设置参 ...
- pytest文档10-命令行传参
前言 命令行参数是根据命令行选项将不同的值传递给测试函数,比如平常在cmd执行"pytest --html=report.html",这里面的"--html=report ...
- Pytest(13)命令行参数--tb的使用
前言 pytest 使用命令行执行用例的时候,有些用例执行失败的时候,屏幕上会出现一大堆的报错内容,不方便快速查看是哪些用例失败. --tb=style 参数可以设置报错的时候回溯打印内容,可以设置参 ...
- python+pytest,通过自定义命令行参数,实现浏览器兼容性跑用例
场景拓展: UI自动化可能需要指定浏览器进行测试,为了做成自定义配置浏览器,可以通过动态添加pytest的命令行参数,在执行的时候,获取命令行传入的参数,在对应的浏览器执行用例. 1.自动化用例需要支 ...
- Scrapy 1.4 文档 05 命令行工具
在系统命令行中,使用 scrapy 命令可以创建工程或启动爬虫,它控制着 Scrapy 的行为,我们称之为 Scrapy 命令行工具(command-line tool)或 Scrapy 工具(Scr ...
- pytest文档28-重复执行用例(pytest-repeat)
前言 平常在做功能测试的时候,经常会遇到某个模块不稳定,偶然会出现一些bug,对于这种问题我们会针对此用例反复执行多次,最终复现出问题来. 自动化运行用例时候,也会出现偶然的bug,可以针对单个用例, ...
- pytest文档53-命令行实时输出错误信息(pytest-instafail)
前言 pytest 运行全部用例的时候,在控制台会先显示用例的运行结果(.或F), 用例全部运行完成后最后把报错信息全部一起抛出到控制台. 这样我们每次都需要等用例运行结束,才知道为什么报错,不方便实 ...
- C# 动态生成word文档 [C#学习笔记3]关于Main(string[ ] args)中args命令行参数 实现DataTables搜索框查询结果高亮显示 二维码神器QRCoder Asp.net MVC 中 CodeFirst 开发模式实例
C# 动态生成word文档 本文以一个简单的小例子,简述利用C#语言开发word表格相关的知识,仅供学习分享使用,如有不足之处,还请指正. 在工程中引用word的动态库 在项目中,点击项目名称右键-- ...
随机推荐
- Mybatis-日志
日志 目录 日志 1. 日志工厂 1. STDOUT_LOGGING标准日志输出 2. LOG4J 1. 先导入Log4J的包 2. log4j.properties 3. 配置log4j为日志的实现 ...
- 设计模式也可以这么简单(7年开发老鸟PS注释总结)
设计模式是对大家实际工作中写的各种代码进行高层次抽象的总结,其中最出名的当属 Gang of Four (GoF) 的分类了,他们将设计模式分类为 23 种经典的模式,根据用途我们又可以分为三大类,分 ...
- 提高SSH服务安全,ssh黑白名单
1.调整sshd服务配置,并重载服务 # vim /etc/ssh/sshd_config PermitRootLogin no #禁止root用户登录 Use ...
- HTML -- 表单元素2
(1)<select>元素(下拉列表) <html> <body> <!-- 表单处理程序在action属性中指定 --> <form actio ...
- 第16课 - make的隐式规则(下)
第16课 - make的隐式规则(下) 1
- 论如何学习Extjs
可能现在学习Extjs相比于Vue,在网上的资料要少很多,不过一些旧的视频还是可以帮助你们了解到Extjs是怎么回事. 这里讲一下自己是如何开始学习Extjs语言的: 1.先从Ext的中文文档中学习怎 ...
- zookeeper(4) 网络
zookeeper底层通过NIO进行网络传输,如果对NIO不是很熟悉,先参见java NIO.下面我们来逐步实现基于NIO的zookeeper实现,首先我们要定义应用层的通信协议. 传输协议 请求协议 ...
- java虚拟机配置
-XXSurvivorRatio 设置两个survivor和eden的比,8表示两个survivor:eden:2:8.survivor的比例影响新生代向老年代移动的数度.survivor比例越小,新 ...
- 两年银行经验的阿里、头条社招面经分享(已拿offer)
lz是非科班自学的java,毕业后进入卡中心,现在是2年开发经验.20年年初先后面了头条.拼多多和阿里(淘宝和支付宝),并成功拿到阿里和头条两家的offer. 面试前我主要是在牛客网看大家的面经进 ...
- ssh 远程执行命令 nohup 无效问题
昨夜1:00多准备睡觉了,突然一哥们咨询了我一个问题. 他A机器上远程执行B机器(ssh user@ip "command")上的脚本,B上的服务并没有起来. 看了下截图,脚本确实 ...