Python接口自动化测试之pytest:(四)共享Fixture

在测试过程中,会有许多测试用例的前置条件都存在相同的内容,比如登录,如果每执行一个测试用例都执行一次登录显然是不合理的。因此需要将登录写成一个方法,共享给所有需要使用的测试用例。要实现这样的功能需要conftest.py文件,在conftest.py文件中定义共享的功能,其他测试文件在运行时会自动查找。

一、conftest.py文件

在使用conftest.py文件时需要注意:

1、conftest.py文件名称是固定的,不能修改。

2、conftest.py需要与运行的用例文件在同一个package下,并且存在_init_.py文件。

3、使用conftest.py文件时不需要导入,Pytest用例会自动识别。

4、如果conftest.py文件放在项目的根目录下,对全局生效。若放在某个package下则只对package下的用例文件生效,并且允许存在多个conftest.py文件。

5、conftest.py文件不能被其它文件导入。

6、所有同目录测试文件运行前都会执行conftest.py文件。

二、使用conftest.py实现共享Fixture功能

1、目录结构

在一个package下创建_init_.py文件、conftest.py文件以及两个测试文件,目录结构如下:

2、conftest.py文件

在文件中定义一个登录退出方法,并且在方法上添加装饰器@pytest.fixture()。、

import pytest
@pytest.fixture()
def sign_exit():
    print('\n登录成功!')
    yield
    print('\n退出登录!')

3、测试文件

test_fixture_1文件的测试方法:

def test_fixture1(sign_exit): #在参数中调用fixture方法
    print('第一个测试方法')
    assert 1 == 1

test_fixture_2文件的测试方法:

def test_fixture2(sign_exit):
    print('第二个测试方法')
    assert 2 == 2

def test_fixture3(sign_exit):
    print('第三个测试方法')
    assert 3 == 3

4、运行结果

在package目录下运行pytest -s -v,运行结果如下。可见在每个测试方法执行前后都进行了登录和退出,实现了fixture的共享。

因为上面的fixture方法的scope是function级别的,所以在每个方法运行前后都会调用,如果需要在程序运行过程中只执行一次,那么只需要把fixture的作用域修改为会话级别session即可,运行结果如下:

今天的内容就这些~拜拜咯~

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

鸣宝

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

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

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

打赏作者

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

抵扣说明:

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

余额充值