pytest使用教程(二)

pytest使用教程(二)

1、fixture

1.1、源码详解
fixture(scope=‘function’,params=None,autouse=False,ids=None,name=None):

scope:可以控制fixture的作用范围,四个级别:“function”(默认),“class”,“module”,“session”
params:一个可选的参数列表,它将导致多个参数调用fixture功能和所有测试使用它。
autouse:是否自动使用,默认为False,
ids:配合params使用,指定每批参数的id号
name:fixture的名称,若为定义,函数名即为fixture名称

1.2、fixture的作用范围

fixture里面有个scope参数可以控制fixture的作用范围:session>module>class>function

-function:每一个函数或方法都会调用(默认为function
-class:每一个类调用一次,一个类中可以有多个方法
-module:每一个.py文件调用一次,该文件内又有多个function和class
-session:是多个文件调用一次,可以跨.py文件调用,每个.py文件就是module

案例列举
下面展示一些案例,便于理解文字。
案例1—基础

import pytest
@pytest.fixture()
def kk():
	#yield之前的部分相当于unittest的setup**方法,即执行用例 “前” 需要完成的事
    print("这里是 kk fixture")
    yield
    #yield之前的部分相当于unittest的teardown**方法,即执行用例 “后” 需要完成的事,(个人认为常用于释放资源)
    print(" 这里 end kk fixture")

def test_KKKKK(kk):
    print("function KKKKKKK")
    print("这里的a是传过来的")

案例2—name参数和scope参数

import pytest
@pytest.fixture(name="b", scope="module")
def kk():
    print("这里是 kk fixture")
    yield
    print(" 这里 end kk fixture")

def test_KKKKK(b):
    print("function KKKKKKK")
    print("这里的a是传过来的")

案例3—合集

import pytest
@pytest.fixture(name="b", scope="module")
def kk():
    print("这里是 kk fixture")
    yield
    print(" 这里 end kk fixture")

@pytest.fixture(name= "a", scope="function", params=["测试", "从一而终"], ids=["P1", "p2"])
def ka(request):
    print("start a fixture")
    print(request.param)
    yield 2
    print("end a fixture ~= teardown")

#此处让它执行两个fixture
def test_KKKKK(a,b):
    print("function KKKKKKK")
    print("这里的a是传过来的", a)

2、conftest.py与fixture强关联

2.1、conftest使用的注意点:

1、conftest.py与运行的用例要在同一个pakage下,并且有__init__.py文件
2、不需要import导入 conftest.py,pytest用例会自动识别该文件
3、conftest.py配置脚本名称是固定的,不能改名称
4、conftest.py文件不能被其他文件导入
5、跨.py文件调用,即与conftest.py同目录下的测试用例文件都可以访问conftest文件(与第一点同理)
6、可有多个conftest.py

个人理解:一个文件夹A中放了一个conftest.py,conftest相当于一个容器,里面放了很多不同的fixture,文件夹A下的测试用例文件test_A.py、test_B.py等都可以使用该conftest。

这样做的好处就是:共享,conftest中有些scope为session或者moudle的fixture只需执行一次,而不需要每个用例中都执行一次

基础的文件结构如下
(FYI:可以根据需要再不同的目录层级配置conftest.py)
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值