pytest标记mark的使用(三)

pytest标记使用

1、参数化-pytest.mark.parametrize

import pytest

class Test_01(object):
    @pytest.mark.parametrize("a,b", [(3, 6),(2,4)])
    def test_a(self, a,b):
        print("类内部的测试a函数")
        print(a,b)
        assert 1

if __name__ == '__main__':
    pytest.main(["-s","test_01.py"])
  • argnames –用逗号分隔的字符串,表示一个或多个参数名称,或参数字符串的列表/元组。
  • argvaluesargvalues列表确定使用不同参数值调用测试的频率。如果仅指定了一个argname,则argvalues是值的列表。如果指定了N个argname,则argvalues必须是N个元组的列表,其中每个元组元素都为其各自的argname指定一个值。

例子:

@pytest.mark.parametrize(("a","b"), [(3, 6),(2,4)])
@pytest.mark.parametrize("a,b", [(3, 6),(2,4)])
@pytest.mark.parametrize("a", [3,6])
...

2、跳过-@pytest.mark.skip

  • 无条件跳过标记的函数
class Test_01(object):
    def test_a(self):
        print("------测试A函数---------")
        assert 1

    @pytest.mark.skip(reason="没实现,暂时跳过")
    def test_b(self):
        print("------测试B函数---------")
        assert 1


if __name__ == '__main__':
    pytest.main(["-s", "test_01.py"])

3、条件成立跳过-@pytest.mark.skipif

  • 条件成立时,跳过标记的函数
import pytest


class Test_01(object):
    def test_a(self):
        print("------测试A函数---------")
        assert 1

    @pytest.mark.skipif(1 < 2, reason="没实现,暂时跳过")
    def test_b(self):
        print("------测试B函数---------")
        assert 1


if __name__ == '__main__':
    pytest.main(["-s", "test_01.py"])

4、标记失败-pytest.mark.xfail(condition=None, ***, reason=None, raises=None, run=True, strict=False)

  • condition (bool or str) –将测试函数标记为xfail(真/假或条件字符串)。
  • reason (str) – 测试函数标记为xfail的原因。
  • raises (Exception) – 期望由测试函数引发的异常子类;其他异常将无法通过测试。
  • run (bool) –测试功能是否应该实际执行。如果为False,则该函数将始终xfail且不会执行(如果一个函数存在段错误,则很有用)
  • strict (bool)
    • 如果是False(默认值),则该功能将在终端输出中显示,xfailed好像它失败了,xpass好像通过了一样。在两种情况下,这都不会导致测试套件整体失败。这对于标记片状测试(随机失败的测试)以供日后处理特别有用。
    • 如果为True,则该函数将在终端输出中显示为xfailed好像失败,但是如果意外通过,则它将使测试套件失败。这对于标记始终失败的功能特别有用,并且如果它们意外开始通过,则应该有明确的指示(例如,新版本的库修复了已知的错误)。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值