pytest用例设置前后置、固件

一、测试用例前后置

前置:setup 每个用例开始前执行一次
setup_class 每个类开始前执行一次
后置:teardown 每个用例结束后执行一次
teardown_class 每个类结束后执行一次

import pytest
class TestPC:
    def setup_class(self):
        print("测试类开始,每个类开始前执行一次")
    def setup(self):
        print("这是用例开始,每个用例开始都会执行一次")

    def test_login(self):
        print('今天星期一')

    def test_add(self):

        print(1+2,'天气很不错')
    def teardown(self):
        print("这是用例结束,每个用例结束都会执行一次")

    def teardown_class(self):
        print("测试类结束,每个类结束后执行一次")

执行结果:
在这里插入图片描述
当用例繁多,每个测试用例添加前后置会出现很多冗余代码,所以可以进行封装,创建一个公共工具文件夹common存放
在这里插入图片描述
然后在用例所在的类中集成这个类
在这里插入图片描述

二.使用fixture固件实现部分用例前后置

@pytest.fixture(scope=“function”,autouse=False,params=read_yaml())
scope:作用域
functio表示该固件作用域在函数,即在函数之前和函数之后执行
1.手动调用是在测试用例的参数后面加入fixture名称
2.如果fixture有通过return或者yield返回值的话,可以把这个值作为参数传递到用例中,通过固件名称返回

scope=class:在类之前和之后执行
scope=package/session:在整个项目/回话之后执行
autouse:自动执行,默认为Flase
params:实现参数化

import pytest
def read_yaml():
    return ["huge","tangyan","yangmi"]
@pytest.fixture(scope="function",autouse=False,params=read_yaml())
def exe_database_sql(request):
    print("sql查询")
    yield request.param
    print("关闭查询")
 @pytest.mark.usefixtures("exe_database_sql")
class TestPC():
    def test_login(self):
        print('今天星期一')
    def test_add(self,exe_database_sql):
        print(1+2,'天气很不错:',exe_database_sql)

genju 在这里插入图片描述调用exe_database_sql的用例会根据参数执行相应的次数,并将exe_database_sql的值作为参数
ids:给参数起别名,不能单独使用,必须结合params使用
name:给fixture固件起别名,使用name之后,调用该固件时必须使用新起的别名

def read_yaml():
    return ["huge","tangyan","yangmi"]
@pytest.fixture(scope="function",autouse=False,params=read_yaml(),ids=['a','b','c'],name='db')
def exe_database_sql(request):
    print("sql查询")
    yield request.param
    print("关闭查询")
  class TestPC():
    def test_login(self):
        print('今天星期一')
    def test_add(self,db):
        print(1+2,'天气很不错:',db)

三:fixture结合conftest.py文件

1.conftest.py专门用于存放fixture的配置文件,固定名称
2.conftest.py中所有的方法调用都不需要导包
3.conftest.py可以有多个,且多个conftest.py中的固件均可被一个用例调用
在这里插入图片描述
在这里插入图片描述

四、setup、setup_class、teardown、 teardown_class、fixture、conftest.py优先级

类:fixture:session > fixture:class > setup_class
函数:fixture:functiom>setup

五、pytest执行顺序

1.查询当前目录下的conftest.py文件
2.查询当前目录下的pytest.ini文件,找到测试用例的路径位置
3.查询用例目录下的conftest.py文件
4.查询py文件中是否有setup、setup_class、teardown、 teardown_class
5.再根据pytest.ini文件的测试用例规则去查找用例执行

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值