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的动态库 在项目中,点击项目名称右键-- ...
随机推荐
- lua数据结构之table的内部实现
一.table结构 1.Table结构体 首先了解一下table结构的组成结构,table是存放在GCObject里的.结构如下: typedef struct Table { CommonH ...
- shell字体颜色应用
输出特效格式控制: \033[0m 关闭所有属性 \033[1m 设置高亮度 \03[4m 下划线 \033[5m 闪烁 \033[7m 反显 \033[8m ...
- [LeetCode]394. 字符串解码(栈)
题目 给定一个经过编码的字符串,返回它解码后的字符串. 编码规则为: k[encoded_string],表示其中方括号内部的 encoded_string 正好重复 k 次.注意 k 保证为正整数. ...
- JVM_01 简介
本篇仅仅是JVM的简介,关于更多的JVM细节,请参见本专题JVM: 计算机系统当中的JVM JVM是运行在操作系统之上的,并没有和硬件有直接的交互 Java代码一次编译,到处运行 HotSpot虚拟机 ...
- 基于DDD+微服务的开发实战(1)
1 DDD是什么? DDD是领域驱动设计,是Eric Evans于2003年提出的,离现在有17年. 2 为什么需要DDD 当软件越来越复杂,实际开发中,大量的业务逻辑堆积在一个巨型类中的例子屡见不鲜 ...
- 从C++入手,探寻java的特点
java的特点 java语言建立在成熟的算法语言和坚实的面向对象理论的基础上,具有强大的应用系统设计能力,其具备的跨平台特型,其具备的跨平台特型.面向对象和可靠性.安全性等特点是它能够充分适应网络需要 ...
- Java多线程--公平锁与非公平锁
上一篇文章介绍了AQS的基本原理,它其实就是一个并发包的基础组件,用来实现各种锁,各种同步组件的.它包含了state变量.加锁线程.等待队列等并发中的核心组件,现在我们来看一下多线程获取锁的顺序问题. ...
- 2.2 spring5源码 -- ioc加载的整体流程
之前我们知道了spring ioc的加载过程, 具体如下图. 下面我们就来对照下图, 看看ioc加载的源代码. 下面在用装修类比, 看看个个组件都是怎么工作的. 接下来是源码分析的整体结构图. 对照上 ...
- 刷题[HCTF 2018]WarmUp
解题思路 进入页面之后,一个大大的滑稽. 查看源码 查看源码发现有source.php .打开 发现还有一个hint.php.打开发现 由此可知是代码审计了 解题 代码审计 先看此段代码,大致意思是. ...
- 使用Flutter完成10个商业项目后的经验教训
作者:Łukasz Kosman 和 Jakub Wojtczak 原文:https://medium.com/swlh/lessons-learned-after-making-the-first- ...