前言

写完一个项目的自动化用例之后,发现有些用例运行较慢,影响整体的用例运行速度,于是领导说找出运行慢的那几个用例优化下。

--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统计用例运行时间的更多相关文章

  1. pytest文档52-命令行参数--setup-show查看fixture的执行过程

    前言 使用命令行运行 pytest 用例的时候,看不到 fixture 的执行过程. 如果我们想知道fixture的执行过程和先后顺序,可以加上 --setup-show 命令行参数,帮助查看 fix ...

  2. pytest文档49-命令行参数--tb的使用

    前言 pytest 使用命令行执行用例的时候,有些用例执行失败的时候,屏幕上会出现一大堆的报错内容,不方便快速查看是哪些用例失败. --tb=style 参数可以设置报错的时候回溯打印内容,可以设置参 ...

  3. pytest文档10-命令行传参

    前言 命令行参数是根据命令行选项将不同的值传递给测试函数,比如平常在cmd执行"pytest --html=report.html",这里面的"--html=report ...

  4. Pytest(13)命令行参数--tb的使用

    前言 pytest 使用命令行执行用例的时候,有些用例执行失败的时候,屏幕上会出现一大堆的报错内容,不方便快速查看是哪些用例失败. --tb=style 参数可以设置报错的时候回溯打印内容,可以设置参 ...

  5. python+pytest,通过自定义命令行参数,实现浏览器兼容性跑用例

    场景拓展: UI自动化可能需要指定浏览器进行测试,为了做成自定义配置浏览器,可以通过动态添加pytest的命令行参数,在执行的时候,获取命令行传入的参数,在对应的浏览器执行用例. 1.自动化用例需要支 ...

  6. Scrapy 1.4 文档 05 命令行工具

    在系统命令行中,使用 scrapy 命令可以创建工程或启动爬虫,它控制着 Scrapy 的行为,我们称之为 Scrapy 命令行工具(command-line tool)或 Scrapy 工具(Scr ...

  7. pytest文档28-重复执行用例(pytest-repeat)

    前言 平常在做功能测试的时候,经常会遇到某个模块不稳定,偶然会出现一些bug,对于这种问题我们会针对此用例反复执行多次,最终复现出问题来. 自动化运行用例时候,也会出现偶然的bug,可以针对单个用例, ...

  8. pytest文档53-命令行实时输出错误信息(pytest-instafail)

    前言 pytest 运行全部用例的时候,在控制台会先显示用例的运行结果(.或F), 用例全部运行完成后最后把报错信息全部一起抛出到控制台. 这样我们每次都需要等用例运行结束,才知道为什么报错,不方便实 ...

  9. C# 动态生成word文档 [C#学习笔记3]关于Main(string[ ] args)中args命令行参数 实现DataTables搜索框查询结果高亮显示 二维码神器QRCoder Asp.net MVC 中 CodeFirst 开发模式实例

    C# 动态生成word文档 本文以一个简单的小例子,简述利用C#语言开发word表格相关的知识,仅供学习分享使用,如有不足之处,还请指正. 在工程中引用word的动态库 在项目中,点击项目名称右键-- ...

随机推荐

  1. Linux系统小知识

    换Linux系统快半年了,刚开始总是碰到各种各样的问题,虽然斗解决了,由于没有记录,过一段时间就忘了,故在这里记录一下. 选择国内镜像源: Manjaro有一个很好用的命令rankmirrors.ra ...

  2. 谈谈 mysql和oracle的使用感受 -- 差异

    之前一直使用mysql作为存储数据库,虽然中间偶尔使用sqlite作为本地数据库存储,但没有感觉多少差别. 后来遇上了oracle,且以其作为主要存储,这下就不得不好好了解其东西了.oracle作为商 ...

  3. Fiddler的安装和APP抓包

    前言 1.Fiddler安装包 2.安卓手机 3.iOS手机 1.下载fiddler软件:可以去官网下载https://www.telerik.com/fiddler,可以下载最新版 2.百度云盘(非 ...

  4. JavaFx在Main中获取Controller初始化相关配置和Fxml

    Main中的方法 package sample; import javafx.application.Application; import javafx.fxml.FXMLLoader; impor ...

  5. Skywalking Php注册不上问题排查

    Skywalking是一款分布式追踪应用,具体介绍可以参考 skywalking. 最近公司的一个Php应用在Skywalking后台查不到数据了: 登录到某台服务器上发现注册不上,启动时就报错了: ...

  6. 本以为自己 MySQL 够牛逼了,直到亲自去阿里受虐了一次!

    前言 众所周知,简历上“了解=听过名字:熟悉=知道是啥:熟练=用过:精通=做过东西”. 相信大家对于MySQL的索引都不陌生,索引(Index)是帮助MySQL高效获取数据的数据结构.索引作为MySQ ...

  7. [Java并发包学习八]深度剖析ConcurrentHashMap

    转载自https://blog.csdn.net/WinWill2012/article/details/71626044 还记得大学快毕业的时候要准备找工作了,然后就看各种面试相关的书籍,还记得很多 ...

  8. pytest封神之路第五步 参数化进阶

    用过unittest的朋友,肯定知道可以借助DDT实现参数化.用过JMeter的朋友,肯定知道JMeter自带了4种参数化方式(见参考资料).pytest同样支持参数化,而且很简单很实用. 语法 在& ...

  9. Shell学习(五)Shell输出命令

    一.echo命令 #1.直接显示字符串 echo "It is a test" #输出:It is a test #2.显示转义字符 echo "\"It is ...

  10. 记一次Java获取本地摄像头(基于OpenCV)

    OpenCV官网下载地址(下载安装后,在安装目录可以找到动态链接库和OpenCv.jar) https://opencv.org/releases/ 安装完成后,这是我的安装目录 maven 依赖(这 ...