16.pytest_fixture详细介绍-作为参数传入,error和failed区别

fixture简介

fixture的目的是提供一个固定基线,在该基线上测试可以可靠地和重复地执行。fixture提供了区别于传统单元测试(setup/teardown)有显著改进:

有独立的命名,并通过声明它们从测试函数、模块、类或整个项目中的使用来激活。
按模块化的方式实现,每个fixture都可以互相调用。
fixture的范围从简单的单元扩展到复杂的功能测试,允许根据配置和组件选项对fixture和测试用例进行参数化,或者跨函数 function、类class、模块module或整个测试会话session范围

fixture作为参数传入

定义fixture跟定义普通函数差不多,唯一区别就是在函数上加个装饰器@pytest.fixture(),fixture命名不要用test_开头,跟用例区分开。用例才是test_开头的命名。

fixture是可以有返回值的,如果没return默认返回None。用例调用fixture的返回值,直接就是把fixture的函数名称当成变量名称,如下案例

import pytest

@pytest.fixture()
def user():
    print("获取用户名")
    a = "wwj"
    return a
#将fixture的函数名称当做变量名称传入
def test_1(user):
    assert user == "wwj"

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

error和failed区别

测试结果一般有三种:passed、failed、error。(skip的用例除外)

  1. 如果在test_用例里面断言失败,那就是failed
import pytest

@pytest.fixture()
def user():
    print("获取用户名")
    a = "wwj"
    return a
#将fixture的函数名称当做变量名称传入
def test_1(user):
    assert user == "wwj111"     # 用例失败就是failed

if __name__ == "__main__":
    pytest.main(["-s", "test_fix01.py"])
  1. 如果在fixture里面断言失败了,那就是error
import pytest

@pytest.fixture()
def user():
    print("获取用户名")
    a = "wwj"
    assert a == "wwj123"  # fixture失败就是error
    return a

def test_1(user):
    assert user == "wwj"

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

还有一种情况也会出现error,那就是自己代码写的有问题,自己本身代码报错,那就是error了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值