当前位置: 首页 > article >正文

pytest入门九:feature

fixture是pytest特有的功能,用以在测试执行前和执行后进行必要的准备和清理工作。使用pytest.fixture标识,定义在函数前面。在你编写测试函数的时候,你可以将此函数名称做为传入参数,pytest将会以依赖注入方式,将该函数的返回值作为测试函数的传入参数。
主要的目的是为了提供一种可靠和可重复性的手段去运行那些最基本的测试内容。
从功能上看来,与setup、teardown相似,但是优势明显:

调用方法有2种:

  • 1、在测试用例/测试类上面加上:@pytest.mark.usefixture("fixture的函数名字")

  • 2、将fixture函数名,作为测试用例函数的参数。可以不加@pytest.mark.usefixture("fixture的函数名字")

import pytest


@pytest.fixture()
def init2():
    print("用例执行之前,执行的代码")  # 只有模块执行之前的前置准备代码

@pytest.mark.usefixtures('init2')
def test_1():
    print('test_2')

@pytest.mark.usefixtures('init2')
def test_2():
    print('test_2')

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

 

import pytest

@pytest.fixture
def init():
    print("用例执行之前,执行的代码")  # 前置代码
    yield 'hello'
    print("用例执行之后,执行的代码")  # 后置代码


@pytest.fixture()
def init2():
    print("用例执行之前,执行的代码")  # 只有模块执行之前的前置准备代码


def test_1(init):
    print('test_2',init)

@pytest.mark.usefixtures('init2')
def test_2():
    print('test_2')

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

import pytest

@pytest.fixture
def init():
    print("用例执行之前,执行的代码")  # 前置代码
    yield 'hello'
    print("用例执行之后,执行的代码")  # 后置代码

@pytest.fixture()
def init2():
    print("用例执行之前,执行的代码")  # 只有模块执行之前的前置准备代码


def test_1(init):
    print('test_2',init)


@pytest.mark.usefixtures('init2')
def test_2():
    print('test_2')

@pytest.fixture()
def data():
    return "hello"

def test_data(data):
    print("============",data)




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

 feature 嵌套

import pytest

@pytest.fixture
def init():
    print("用例执行之前,执行的代码")  # 前置代码
    yield 'hello'
    print("用例执行之后,执行的代码")  # 后置代码

@pytest.fixture
def init3(init):
    print("用例执行2之前,执行的代码")  # 前置代码
    yield init
    print("用例执行2之后,执行的代码")  # 后置代码


def test_3(init3):
    assert init3 == 'hello'





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


http://www.kler.cn/a/441563.html

相关文章:

  • 方便快捷的软件展示平台查找和下载所需的软件
  • OpenCV相机标定与3D重建(65)对图像点进行去畸变处理函数undistortPoints()的使用
  • OpenEuler学习笔记(九):安装 OpenEuler后配置和优化
  • QT调用OpenSceneGraph
  • 软件测试—— 接口测试(HTTP和HTTPS)
  • 第3天:阿里巴巴微服务解决方案概览
  • 【Hive 如何进行update更新?】
  • “MODAS: 利用多组学数据关联研究探索玉米种质资源“
  • elasticsearch 版本
  • [机器学习]AdaBoost(数学原理 + 例子解释 + 代码实战)
  • k8s集群安装keepalive+haproxy
  • M4Pro内核MacOS brew安装docker爬坑
  • 给新ubuntu电脑配置远程控制环境和c++版本的opencv环境
  • 如何运用 HTM?
  • 数据结构 ——前缀树查词典的实现
  • PHP和phpSpider如何应对反爬虫网站的IP封禁
  • python在纯文本程序里面藏一张图
  • 大数据第三次周赛
  • 2024年12月11日Github流行趋势
  • git 导出某段时间修改的文件 windows
  • 基于Spring Boot的无可购物网站系统
  • Go-FastDFS文件服务器一镜到底使用Docker安装
  • 包管理器NPM
  • 前端学习-JavaScript基本介绍(十九)
  • 四、CSS3
  • 本地储存和服务器储存区别