Python接口自动化测试之pytest:(二)pytest.mark标记

mark是用来对测试方法进行标记的一个装饰器。装饰器可以根据字面意思理解就是对测试方法的修饰,在测试方法的上方调用装饰器函数,就可以使得测试方法在实现自己功能之外还可以有其他的功能。

一、标记测试函数

在命令行模式下可以使用pytest --markers查看官方提供的mark,如下图所示,共有8个mark函数。

各个mark的含义如下:

1、@pytest.mark.filterwarnings(warning):在标记的测试方法上添加警告过滤。

2、@pytest.mark.skip(reason=None):执行时跳过标记的测试方法,reason为跳过原因,默认为空。

3、@pytest.mark.skipif(condition):通过条件判断是否跳过标记的测试方法。如果condition的判断结果为真则跳过,否则不跳过。

4、@pytest.mark.xfail(condition, reason=None, run=True, raises=None, strict=False):如果条件condition为True,则将测试预期结果标记为False。

5、@pytest.mark.parametrize(arguments, argvalues):测试函数参数化,即调用多次函数,传递不同的参数。

6、pytest.mark.uesfixtures(fixturename1, fixturename2, ...):将测试用例标记为需要指定的所有fixture(固件),和直接使用fixture的效果是一样的,只不过不需要把fixture名称作为参数放在方法声明当中。

7、pytest.mark.tryfirst:标记一个挂钩实现函数,使所标记的测试方法可以首先或尽早执行。

8、pytest.mark.trylast:标记一个挂钩实现函数,使所有标记的测试方法可以最后或尽可能晚执行。

下面详细说下xfail和parametrize的用法。

二、xfail

xfail可以拆成x和fail理解,x表示预期的结果,fail为失败,标记的是预期结果为失败的用例。xfail装饰器解决的是对于很清楚测试用例运行结果为失败,但是又需要执行的用例,可以在结果中给出很明显的标识。

以下两个用例断言结果分别是成功和失败,都用xfail做了标记

@pytest.mark.xfail(reason='这个用例预期结果是失败的')
def test_add1():
    assert add(2, 3) == 5  #断言结果成功

@pytest.mark.xfail(reason='这个用例预期结果是失败的')
def test_add2():
    assert add(2, 3) == 4  #断言结果失败

简化的执行结果为Xx:X为test_add1的运行结果,表示xpass,意思是预期结果是失败的,但是断言结果却为成功;x为test_add2的运行结果,表示xfail,意思是预期结果是失败的,断言结果也是失败的。

详细的执行结果如下:

三、parametrize

parametrize用于对测试用例的数据进行参数化,使得同一个测试方法可以用不同的测试数据进行测试。使用时会用两种场景:一是单参数的使用;二是多个参数的使用。

1、单参数的使用

例子如下:

#-*-coding:utf-8-*-
import pytest
list = [1, 2, 3, 4]  #定义一个列表

@pytest.mark.parametrize('num', list) #'num'为测试方法的参数,给参数赋值为list
def test_add1(num):
    assert add_number(1, num) == num+1

运行结果如下:可以看到将list中的数据分别进行了测试

2、多个参数的使用

先看个例子:

#-*-coding:utf-8-*-
import pytest
list_two = [(1, 2, 3), (2, 3, 5), (3, 5, 6)]

def add_number(a, b):
    return a+b
#num1,num2,sum都是测试方法的参数,运行时将list[0]、list[1]、list[2]分别赋值给参数
@pytest.mark.parametrize('num1, num2, sum', list_two) 
def test_add1(num1, num2, sum):
    assert add_number(num1, num2) == sum

即运行的第一组参数为:num1=1,num2=2,sum=3;第二组参数为:num1=2,num2=3,sum=5;第三组参数为:num1=3,num2=5,sum=6

运行结果如下:

希望这些内容对码友们会有帮助(*^▽^*)

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鸣宝

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值