您好,欢迎来到华佗养生网。
搜索
您的当前位置:首页Pytest框架 — conftest.py文件的使用

Pytest框架 — conftest.py文件的使用

来源:华佗养生网

1、conftest.py文件介绍

conftest.py文件是Pytest框架里面一个很重要的东西,它可以在这个文件里面编写Fixture函数,这个Fixture函数的作用,就相当于Unittest框架里面的setup()前置函数和teardown()后置函数,虽然Pytest框架也有setup()前置函数和teardown()后置函数,但是在实际工作中没必要写在测试用例文件中,直接写在conftests.py里面就好了,Pytest框架会自动去找conftest.py文件里面的东西,这样更灵活。
总结:在实际工作中,通常conftest.py@pytest.fixture()结合使用,实现全局的前后置应用。

2、conftest.py的注意事项

3、conftest.py的使用

"""
1.学习目标
    掌握conftest.py文件编写格式
2.操作步骤
    2.1 conftest.py文件名不能修改
        conftest.py文件中存放项目所有的fixture
        方便对fixture管理和维护
    2.2 在conftest.py定义函数
        在函数前添加@pytest.fixture()装饰器
        在测试用例的函数中传入fixture标识的函数名。

提示:conftest.py文件放在项目的根目录,作用域是全局的。
    conftest.py文件放在某一个包下,作用域只在该包内。

"""
import pytest
from selenium import webdriver


@pytest.fixture()
def login():
    print("打开APP")
    print("登录成功")
    yield  # 当用例执行完成后,执行yield后的代码
    print("关闭APP")


@pytest.fixture()
def driver(request):  # request是Pytest中的一个关键字,固定写法。
    # 步骤1:创建浏览器驱动对象
    driver = webdriver.Chrome()

    # 步骤3:定义用例执行后要执行的代码,封装到一个函数中
    def end():  # 这个end函数命是自定义的
        driver.quit()

    # 步骤4:执行上面封装的代码。
    # 通过request关键字,结束上面的函数。
    request.addfinalizer(end)  # 终结函数

    # 步骤2:返回浏览器驱动对象,给测试用例
    return driver

(2)测试用例文件如下

import pytest

# 注意:要把conftest.py文件中定义的fixture方法添加到用例中
def test_add_cart(login): # 把conftest.py文件中的fixture函数传入用例
    print("添加购物车--需要登录")


def test_add_address(login):
    print("添加收货地址--需要登录")


if __name__ == '__main__':
    pytest.main()

"""
执行结果:

test_01.py::test_add_cart 打开APP
登录成功
添加购物车--需要登录
PASSED关闭APP

test_01.py::test_add_address 打开APP
登录成功
添加收货地址--需要登录
PASSED关闭APP
"""

4、不同位置conftest.py文件的优先级

  • 比如在测试框架的根目录创建conftest.py文件,文件中的Fixture的作用范围是所有测试模块。
  • 比如在某个单独的测试文件夹里创建conftest.py文件,文件中Fixture的作用范围,就仅局限于该测试文件夹里的测试模块。
    该测试文件夹外的测试模块,或者该测试文件夹外的测试文件夹,是无法调用到这个conftest.py文件中的Fixture。
  • 如果测试框架的根目录和子包中都有conftest.py文件,并且这两个conftest.py文件中都有一个同名的Fixture,实际生效的是测试框架中子包目录下的conftest.py文件中配置的Fixture。
  • 提示:一个用例可以添加多个conftest.py文件中定义的Fixture夹具,如下:
# 注意:要把conftest.py文件中定义的fixture方法添加到用例中
def test_add_cart(login, driver):
    print("添加购物车--需要登录")

5、conftest.py中Fixture(夹具)的作用域

Fixture的scope参数也适用conftest.py文件中Fixture的特性:

  1. conftest.py文件中Fixture的scope参数为session,那么所有的测试文件执行前(后)执行一次conftest.py文件中的Fixture。
  2. conftest.py文件中Fixture的scope参数为module,那么每一个测试文件执行前(后)都会执行一次conftest.py文件中Fixture。
  3. conftest.py文件中Fixture的scope参数为class,那么每一个测试文件中的测试类执行前(后)都会执行一次conftest.py文件中Fixture。
  4. conftest.py文件中Fixture的scope参数为function,那么所有文件的测试用例执行前(后)都会执行一次conftest.py文件中Fixture。

6、总结:

  • Pytest框架中的setup()/teardown()函数,setup_class()/teardown_class()函数。他们是作用于所有用例或者所有类的。
  • @pytest.fixtrue()的作用域是既可以部分用例,也可以全部用例的前后置。
  • conftest.py文件和@pytest.fxtrue()装饰器结合使用,作用于全局用例的前后置。

重点:配套学习资料和视频教学

那么在这里我也精心准备了上述大纲的详细资料在下方链接如下

 【已更新】B站讲的最详细的Python接口自动化测试实战教程全集(实战最新版)
》,以及配套的接口文档/项目实战【网盘资源】,需要的朋友可以下方视频的置顶评论获取。肯定会给你带来帮助和方向。

【已更新】B站讲的最详细的Python接口自动化测试实战教程全集(实战最新版)

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- huatuo7.cn 版权所有 湘ICP备2022005869号-9

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务