首页 > 编程语言 >python pytest.mark

python pytest.mark

时间:2024-03-18 14:34:11浏览次数:21  
标签:标记 python pytest mark 测试用例 夹具

pytest.mark 是 pytest 测试框架中的一个功能,它允许你为测试用例和测试夹具(fixtures)添加元数据(或称为“标记”)。这些标记可以用于各种目的,例如选择性地运行特定的测试用例集,跳过某些测试用例,或者为测试用例添加额外的信息。

pytest.mark 主要有以下几种用法:

为测试用例添加标记:
你可以使用 pytest.mark.xxx 装饰器来为特定的测试用例添加标记。这些标记可以在命令行中使用 -m 选项来过滤要运行的测试用例。

python
import pytest

@pytest.mark.slow
def test_something_slow():
# 这个测试用例被标记为 "slow"
pass
然后,在命令行中,你可以使用以下命令来只运行标记为 "slow" 的测试用例:

bash
pytest -m slow
为夹具添加标记:
除了测试用例,你还可以为夹具添加标记。这可以用于控制夹具的作用域(scope)或其他行为。

python
import pytest

@pytest.fixture(scope="module", params=[1, 2])
@pytest.mark.usefixtures
def my_fixture(request):
return request.param
在这个例子中,my_fixture 被标记为 usefixtures,尽管这个标记本身并不改变夹具的行为。但是,你可以自定义 pytest 钩子函数来根据这些标记改变夹具的行为。

跳过测试用例:
pytest.mark.skip 和 pytest.mark.skipif 可以用来跳过某些测试用例。skip 无条件地跳过测试用例,而 skipif 则在满足特定条件时跳过。

python
import pytest
import sys

@pytest.mark.skipif(sys.platform == 'win32', reason="does not run on windows")
def test_on_unix():
# 这个测试用例在 Windows 上会被跳过
pass
预期失败的测试用例:
pytest.mark.xfail 可以用来标记预期会失败的测试用例。这有助于跟踪那些你知道有问题但尚未修复的测试用例。

python
import pytest

@pytest.mark.xfail(reason="bug 123")
def test_function():
# 这个测试用例预期会失败,因为有一个已知的 bug
assert False
使用自定义标记:
你还可以定义自己的标记,并在测试用例或夹具中使用它们。然后,你可以编写自定义的 pytest 钩子函数来处理这些标记。

python
import pytest

@pytest.mark.mycustommark
def test_function():
pass
要处理自定义标记,你需要在 pytest_configure 或其他钩子函数中编写逻辑。

标记是 pytest 一个非常强大的功能,它允许你以灵活的方式组织和控制你的测试套件。通过合理地使用标记,你可以更容易地管理、维护和运行你的测试用例。

标签:标记,python,pytest,mark,测试用例,夹具
From: https://www.cnblogs.com/luckyletop/p/18080327

相关文章

  • 如何调用Pytest
    如何调用Pytest在模块中运行测试pytesttest_mod.py在目录中运行测试pytesttesting/通过关键字表达式运行测试pytest-k'MyClassandnotmethod'这将运行包含与给定字符串表达式(不区分大小写)匹配的名称的测试,其中可以包括使用文件名、类名和函数名作为变量的Python......
  • python @pytest.fixture示例及用法
    [email protected]示例及用法@pytest.fixture是pytest测试框架中的一个非常有用的功能,它允许你定义可以在多个测试用例之间共享的设置和清理代码。通过使用fixture,你可以减少重复的代码,并使得测试用例更加清晰和模块化。下面是一个简单的示例,展示了如何使用@pytest.fi......
  • 安装Pytest
    安装Pytest在命令行中运行以下命令pipinstall-Upytest检查是否安装了正确的版本pytest--version创建你的第一个测试创建一个名为test_sample.py的新文件,包含一个函数和一个测试#contentoftest_sample.pydeffunc(x):returnx+1deftest_answer():......
  • [983] Add a notification after finishing the Python script
    ref:HowtoimplementaPythondesktopnotifierusingtheplyermoduleYoucangenerateanotificationafteryourPythoncodefinishesexecutingusingvariousmethods.Hereareafewoptions:UsingPlyer(Cross-Platform):Installthe plyer libraryusi......
  • CS 3800 python
    CS3800在线W.Schnyder2024年春季3/6/2024课业7(3月15日星期五到期)说明:此课业应在到期日之前11:59pm之前以一年级的PDF(不零件)提交。您可以在文字处理器中键入解决方案,然后将其打印到PDF,或者手工编写并提交扫描副本。写下并提交答案,就像他们是专业报告一样。如果提交不整洁(......
  • 【机器学习-04】最小二乘法的推导过程及使用方法(python代码实现)
    最小二乘法是一种常用的数据拟合方法,它可以通过最小化残差平方和来找到数据的最佳拟合线。有了上述内容铺垫之后,本文将介绍最小二乘法的推导过程,并提供使用Python实现最小二乘法的代码示例。1.模型及方程组的矩阵形式改写  首先,我们对......
  • python做了一个极简的栅格地图行走机器人,到底能干啥?[第五弹]——解锁蒙特卡洛定位功能
    目录1、前言2、增加的功能3、主要算法python实现3.1定义一个地图和固定标签3.2定义一个粒子3.3定义一个粒子管理类3.4定义粒子运动模型3.5定义观测模型3.6定义权重计算3.6更新粒子重采样4总结5、python源码1、前言在现代科技的普及下,人们对于机器人的兴趣与期待日......
  • python 服务自动生成 js 调用
    python服务自动生成js调用原理接管请求分发过程;为每个command维护对应的handler;利用python动态特性,获得handler的参数;利用模版生成js代码;利用**kwargs获取所有参数传递给handler;Demo以Flask为例#main.pyfromflaskimportFlask,requestfro......
  • python:ModuleNotFoundError: No module named 'xxx'可能的解决方案大全
    "ModuleNotFoundError:Nomodulenamed'xxx'"这个报错是个非常常见的报错,几乎每个python程序员都遇到过,导致这个报错的原因也非常多,下面是我曾经遇到过的原因和解决方案module包没安装忘了import没有__init__.py文件package包的版本不对自定义的包名与安装的包名相同,导致......
  • Python实践:基于Matplotlib实现某产品全年销量数据可视化
    本文分享自华为云社区《画图实战-Python实现某产品全年销量数据多种样式可视化》,作者:虫无涯。学习心得有时候我们需要对某些数据进行分析,得到一些可视化效果图,而这些效果图可以直观展示给我们数据的变化趋势;比如某产品的月销量数据、销售额的地区分布、销售增长和季节的变......