博客
关于我
Pytest测试实战|Conftest.py详解
阅读量:797 次
发布时间:2023-03-05

本文共 1525 字,大约阅读时间需要 5 分钟。

Pytest测试框架中的Conftest.py特性实战

Pytest测试框架中的Conftest.py文件是一个强大的功能,能够帮助测试工程师在多个测试模块间共享公共Fixture函数。传统的Fixture函数在每个测试模块中都需要重复编写,这种做法不仅效率低下,还容易导致代码冗余和维护困难。Conftest.py的出现有效解决了这一问题。

Conftest.py文件的主要作用是将Fixture函数集中管理和共享。在一个测试项目中,所有需要共享的Fixture函数都可以放置在Conftest.py中。这样,多个测试模块可以共同使用这些共享Fixture,提升代码的复用性和维护性。

登录授权的Fixture函数是一个典型的案例。假设我们有多个测试模块需要进行登录授权操作,每个模块都需要获取授权TOKEN。将登录Fixture函数放置在Conftest.py中,可以使所有模块共享同一个获取TOKEN的逻辑。以下是Conftest.py中可能的实现代码:

import pytestimport requests@pytest.fixture()def login():    response = requests.post(        url='http://0.0.0.0:8000/login/auth/',        json={"username":"13484545195","password":"asd888"},        headers={'content-type':'application/json'}    )    return response.json()['token']@pytest.fixture()def headers(login):    return {'Authorization':'JWT {token}'.format(token=login)}

在各个测试模块中,我们可以通过从Conftest.py导入共享Fixture函数来实现共享。例如,test_index.py和test_platform.py可能的实现如下:

def test_case_index(headers):    response = requests.get(        url='http://0.0.0.0:8000/interface/index',        headers=headers    )    assert response.status_code == 200def test_case_query(headers):    response = requests.get(        url='http://0.0.0.0:8000/interface/products?name=XX课堂',        headers=headers    )    assert response.status_code == 200

通过这种方式,多个测试模块可以共享同一个登录授权Fixture,从而减少代码冗余,提升测试效率。

在实际使用中,需要注意以下几点:

  • Conftest.py文件不能作为普通模块导入,通常存放在测试项目的根目录下。

  • 不是所有Fixture函数都需要放入Conftest.py中。如果某个Fixture仅供特定模块使用,直接定义在该模块中即可。

  • 避免在Conftest.py中放置过多专门的Fixture函数,否则可能导致维护成本增加。

  • 通过合理使用Conftest.py,测试工程师可以显著提升代码复用性,简化测试代码的管理和维护。

    转载地址:http://bnafk.baihongyu.com/

    你可能感兴趣的文章
    Prometheus监控教程:配置介绍
    查看>>
    Prometheus(2):SpringBoot 2.X集成Prometheus
    查看>>
    Promise 原理解析与实现(遵循Promise/A+规范)
    查看>>
    PyTorch:传递 numpy 数组进行权重初始化
    查看>>
    promise.all是并发执行吗_攻破面试灵魂拷问,解读Java并发编程的艺术,本文带你深入l理解...
    查看>>
    PyTorch-Tutorials【pytorch官方教程中英文详解】- 7 Optimization
    查看>>
    promise总结
    查看>>
    Propel项目改为基于TensorFlow.js
    查看>>
    properties出现中文乱码解决方法(万能)
    查看>>
    Property 'submit' of object #<HTMLFormElement> is not a function
    查看>>
    property--staticmethod--classmethod
    查看>>
    propertyGrid
    查看>>
    propertyPlaceholderConfigurer读取配置文件
    查看>>
    proteus三输入与非门名字_proteus 元件名称对照表
    查看>>
    Protobuf - 语法、字段使用规则、注意事项
    查看>>
    protobuf —— 快速上手
    查看>>
    protobuf —— 认识和安装
    查看>>
    Protobuf 三个关键字required、optional、repeated的理解
    查看>>
    ProtoBuf 原理详解
    查看>>
    Protobuf 实例(java)
    查看>>