首页 > 其他分享 > pytest文档 88- pytest-runtime-yoyo 对用例运行时长断言

pytest文档 88- pytest-runtime-yoyo 对用例运行时长断言

时间:2023-06-12 11:57:45浏览次数:52  
标签:用例 88 pytest sleep time test runtime

说明

pytest 执行用例的时候,我们希望对用例的运行时间断言,当用例执行时长大于预期标记此用例失败。
@pytest.mark.runtime(1) 运行时长单位是秒
此插件已打包上传到pypi https://pypi.org/project/pytest-runtime-yoyo/1.0.0/

基本示例 test_demo.py

import pytest
import time


def test_a1():
    time.sleep(2)


@pytest.mark.runtime(1)
def test_a2():
    time.sleep(2)

运行结果

    ======================== short test summary info =====================
    FAILED test_demo.py::test_a2
    ======================== 1 failed, 1 passed in 4.18s ===============

联系我们

版本变更记录

v1.0.0 发布时间: 2023/6/12

实现功能

  • 1.用例中使用 @pytest.mark.runtime(1) 标记用例执行时间
  • 2.pytest.ini 新增 runtime 全局参数
  • 3.命令行中新增 --runtime 全局参数

Installation / 安装

最近环境体验

  • Python 3.8+ 版本
  • Pytest 7.2.0+ 新版

pip 安装插件

pip install pytest-runtime-yoyo

Usage / 标记用例运行时长

基于函数的用例中使用 @pytest.mark.runtime(1) 标记用例执行时间

import pytest
import time

# 作者-上海悠悠 微信/QQ交流:283340479
# blog地址 https://www.cnblogs.com/yoyoketang/


def test_a1():
    time.sleep(2)


@pytest.mark.runtime(1)
def test_a2():
    time.sleep(2)

基于测试类的用例, 在测试类上标记runtime,对测试类下的每个用例都会生效

import pytest
import time


@pytest.mark.runtime(3)
class TestRun:

    def test_a3(self):
        time.sleep(2)

    def test_a4(self):
        time.sleep(1)

标记模块下全部用例

对整个测试模块下的用例全部标记 runtime

import pytest
import time
# 作者-上海悠悠 微信/QQ交流:283340479
# blog地址 https://www.cnblogs.com/yoyoketang/

pytestmark = pytest.mark.runtime(3)


def test_a5():
    time.sleep(1)


def test_a6():
    time.sleep(2)


class TestRun:

    def test_a7(self):
        time.sleep(2)

    def test_a8(self):
        time.sleep(4)

执行结果

collected 4 items
test_x2.py ...F                                                                                                   [100%]

================ FAILURES ===================================
_____________________ TestRun.test_a8 __________________________
================= short test summary info =====================
FAILED test_x2.py::TestRun::test_a8
================= 1 failed, 3 passed in 9.15s =======

如果测试模块,测试类和测试用例上都有runtime 标记

import pytest
import time
# 作者-上海悠悠 微信/QQ交流:283340479
# blog地址 https://www.cnblogs.com/yoyoketang/

pytestmark = pytest.mark.runtime(3)


def test_a5():
    time.sleep(1)


def test_a6():
    time.sleep(2)


@pytest.mark.runtime(1)
class TestRun:

    def test_a7(self):
        time.sleep(2)

    @pytest.mark.runtime(5)
    def test_a8(self):
        time.sleep(4)

那么运行的优先级是: 测试用例 runtime > 测试类 runtime > 测试模块 runtime

全局用例配置

对全部用例设置 runtime 标记,可以在 pytest.ini 中设置全局配置

[pytest]

runtime = 3

也可以在执行 pytest 命令的时候带上命令行参数--runtime

pytest --runtime=3

优先级是: 命令行参数 > pytest.ini 配置
全局配置只针对测试模块,测试类,测试用例没标记 runtime 的用例生效。
如果测试模块,测试类,测试用例有标记 runtime,那么优先级是大于全局配置的。

标签:用例,88,pytest,sleep,time,test,runtime
From: https://www.cnblogs.com/yoyoketang/p/17474642.html

相关文章

  • 【阿里巴巴中国站API接口系列】获得1688商品详情信息-item_get-获得1688商品详情调用
    ​    1688有开放商品详情API接口,使用前需要注册成为开发者并申请API权限。以下是简单的API使用步骤:1. 获取授权key和secret:在开放平台注册获取key和secret接入。2. 构建请求:通过API接口文档构建请求,包括传递必要参数和权限设置等。3. 发送请求:使用HTTP GET或POS......
  • Pytest - Fixture(12) - 配置文件pytest.ini
    Pytest-配置文件pytest.ini前言pytest.ini配置文件可以改变pytest的运行方式,它是一个固定的文件pytest.ini文件,读取配置信息,按指定的方式去运行。作用:可以改变pytest的默认行为;位置:一般放在项目的根目录(即当前项目的顶级文件夹下);命名:pytest.ini,不能使用任何中文符号,包......
  • Codeforces 1188D Make Equal
    设最终所有数变为的值为\(u\),\(\operatorname{bitcount}(x)\)为\(x\)二进制上为\(1\)的位数,由题可得答案即为\(\sum\limits_{i=1}^n\operatorname{bitcount}(u-a_i)\)。此时让\(a_i\)从小到大排序,答案即为\(\sum\limits_{i=1}^n\operatorname{bitcount}(u-a_......
  • pytest 生成的html其他人打开是空的
    本地打开html文件显示正常是应为本地有css,而被人没有。我们打开浏览器查看F12,加载了本地路径中的css文件解决办法:我们可以通过命令把css样式嵌入到html中pytest--html=report.html--self-contained-html再次打开报告,或者别人打开......
  • 1688商品评论的获取以及应用
    如果您是一个1688电商平台的商家,了解并收集消费者对您商品的反馈和评论是非常重要的。使用API接口,您可以轻松地获取商品评论,从而更好地理解消费者的需求和意见。下面是一些获取1688商品评论的步骤。1.注册和获取API接口在1688注册账户并获取API密钥。2.请求API接口使用您......
  • 如何通过API接口获取1688的商品详情
    1688是中国最大的B2B电商平台之一,吸引了大量的国内外买家和卖家,提供了丰富的商品资源。许多开发者和企业想要通过API接口获取1688商品的详细信息,以便于进行商品数据分析、价格监控等工作。在本文中,我们将介绍如何通过API接口获取1688商品详情,并应用爬取下来的数据。第一步:获取API......
  • RK3588-WIF/BT调试之AP6256
    一、简介AP6256是正基科技推出的一款低成本,低功耗的双模模块。是一款SDIO接口单通道802.11ac双频支持BT5.0蓝牙WiFi二合一模块。Model:AP6256:SDIOWIFI+UARTBTChip:BCM43456WiFi: 2.4G&5GBT:5.0WIFIThroughput:up:196Mbits/secdown:187Mbits/sec二、DTS配置2.1配置SDIO/*SDIO......
  • RK3588-CAN总线
    简介ArmSoM-W3RK3588开发板中已集成AN总线:CAN(controllerAreaNetwork)CANBUS:控制器局域网络总线目前世界上绝大多数汽车制造厂商都采用CAN总线来实现汽车内部控制系统之间的数据通信。RK3568/RK3588的CAN驱动文件:drivers/net/can/rockchip/rockchip_canfd.c2.内核配置rockc......
  • RK3588-HDMIRX
    1.简介HDMIIN功能可以通过桥接芯⽚的⽅式实现,将HDMI信号转换成MIPI信号接收,RK3588芯⽚平台⾃带HDMIRX模块,可以直接接收HDMI信号。本篇文章主要介绍在RK3588平台通过HDMIRX模块开发实现HDMIIN功能的⽅法。2.dts配置2.1HDMIRX控制器配置/*Shouldworkwithatleast128MB......
  • pytest的一些关键点
    一.pytest测试框架1.单元测试:是指在软件开发当中,针对软件的最小单位(函数,方法)进行正确性的检查测试。java:junit,testngpython:unittest,pytest2.自动化测试框架作用①提高测试效率,降低维护成本②减少人工干预,提高测试的准确性,增加代码的重用性③核心思想是让不懂代码的......