run case mark timeout
Project description
pytest 执行用例的时候,我们希望对用例的运行时间断言,当用例执行时长大于预期标记此用例失败。 runtime(1) 运行时长单位是秒
基本示例 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 ===============
联系我们
作者-上海悠悠 微信/QQ交流:283340479 blog地址 https://www.cnblogs.com/yoyoketang/
版本变更记录
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 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 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 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,那么优先级是大于全局配置的。
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file pytest-runtime-yoyo-1.0.1.tar.gz
.
File metadata
- Download URL: pytest-runtime-yoyo-1.0.1.tar.gz
- Upload date:
- Size: 3.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.8.5
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | c9613fca6be4c5ac7ab9bf37d43d8914f3b4d6b4ff2c000c1b41c84cc42bfe66 |
|
MD5 | b06d68f29da46daf88c75e7d90e46199 |
|
BLAKE2b-256 | e4c3637a0210a7cd7f9b134ea718314470058b51ec9fa6e82bc3507161b8b5a2 |
File details
Details for the file pytest_runtime_yoyo-1.0.1-py2.py3-none-any.whl
.
File metadata
- Download URL: pytest_runtime_yoyo-1.0.1-py2.py3-none-any.whl
- Upload date:
- Size: 3.8 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.8.5
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | a3dd0b08563d968a2ee46f8f5989946c0e93bb1ee34a7cc978ad47185f8039e1 |
|
MD5 | f5cb9d33dfa5bba7ec2a9b961e2b09b2 |
|
BLAKE2b-256 | 9379cdbb649a8bb69399c5959029c04f94ae90509ef813c50d64b6b93eda9086 |