博客
关于我
Pytest测试实战|Conftest.py详解
阅读量:804 次
发布时间: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/

    你可能感兴趣的文章
    python | fastFM,一个高级的 Python 库!
    查看>>
    python | feature_engine,一个实用的 Python 库!
    查看>>
    python | filelock,一个超酷的 Python 库!
    查看>>
    python | fire,一个强大的 Python 库!
    查看>>
    python | flanker,一个神奇的 Python 库!
    查看>>
    python | flower,一个强大的 Python 库!
    查看>>
    python | funcy,一个超强的 提供函数式编程工具 Python 库!
    查看>>
    python | ggplot,一个超强的 Python 库!
    查看>>
    python | grab,一个强大的 Python 库!
    查看>>
    python | gunicorn,一个非常实用的 Python 库!
    查看>>
    python | h5py,一个无敌的关于 HDF5 的 Python 库!
    查看>>
    python | huey,一个非常厉害的 任务调度 Python 库!
    查看>>
    python | hypothesis,一个有趣的 Python 库!
    查看>>
    python | Indico,一个超酷的 Python 库!
    查看>>
    python | isort,一个有趣的 自动整理导入语句 的Python 库!
    查看>>
    python | jinja,一个超酷的 Python 库!
    查看>>
    python | joblib,一个强大的 Python 库!
    查看>>
    python调用git bash_Python学习第70课-用Git Bash在命令行打开sublime
    查看>>
    python | jsonschema,一个实用的 验证 JSON 数据结构 Python 库!
    查看>>
    python课程的中期报告范文_课题研究中期总结报告范文
    查看>>