32-pytest-内置fixture之request使用

简介: 32-pytest-内置fixture之request使用

前言

  • 本篇来学习pytest内置fixture中的request

request.param

# -*- coding: utf-8 -*-
# @Time    : 2022/3/26
# @Author  : 大海
import os
import pytest
# 测试数据
test_data = ["user1", "user2"]
@pytest.fixture(params=test_data)
def register_users(request):
    # 获取当前的测试数据
    user = request.param
    print("\n拿着这个账号去注册:%s" % user)
    result = "success"
    return user, result
def test_register(register_users):
    user, result = register_users
    print("在测试用例里面里面获取到当前测试数据:%s" % user)
    print(result)
    assert result == "success"
if __name__ == '__main__':
    os.system('pytest -s -v test_61.py')

request.config

  • 获取测试的配置文件参数
  • 在 conftest.py 写一个 hook函数, pytest_addoption 的作用是用于添加命令行参数,request.config 用于读取测试的配置数据
# -*- coding: utf-8 -*-
# @Time    : 2022/4/1
# @Author  : 大海
import pytest
def pytest_addoption(parser):
    parser.addoption(
        "--cmdopt", action="store", default="type1", help="my option: type1 or type2"
    )
@pytest.fixture
def cmdopt(request):
    return request.config.getoption("--cmdopt")
  • 测试用例
# -*- coding: utf-8 -*-
# @Time    : 2022/4/1
# @Author  : 大海
import os
# 方式1 使用request.config
def test_answer_1(request):
    kind = request.config.getoption("--cmdopt")
    print("获取到命令行参数:%s" % kind)
# 方式2 使用fixture
def test_answer_2(cmdopt):
    print("获取到命令行参数:%s" % cmdopt)
if __name__ == '__main__':
    os.system('pytest -s -v test_62.py')

request.module

  • fixture 函数可以通过接受 request 对象来反向获取请求中的测试函数、类或模块上下文
  • 在 conftest.py 编写如下代码
# -*- coding: utf-8 -*-
# @Time    : 2022/4/1
# @Author  : 大海
@pytest.fixture(scope="module")
def smtp(request):
    server = getattr(request.module, "smtpserver", "smtp.qq.com")
    print("fixture 获取到的server :%s" %server)
    smtp = smtplib.SMTP(server, 587, timeout=5)
    yield smtp
    print("完成 %s (%s)" % (smtp, server))
    smtp.close()
  • 测试用例
# -*- coding: utf-8 -*-
# @Time    : 2022/4/1
# @Author  : 大海
import os
smtpserver = "mail.python.org"
def test_show(smtp):
    print("case show")
if __name__ == '__main__':
    os.system('pytest -s -v test_63.py')

request的其他成员对象

  • 在 conftest.py 编写如下代码
# -*- coding: utf-8 -*-
# @Time    : 2022/4/1
# @Author  : 大海
@pytest.fixture(autouse=True)
def print_request(request):
    print("\n=======================request start=================================")
    print(request.module)
    print(request.function)
    print(request.cls)
    print(request.fspath)
    print(request.fixturenames)
    print(request.fixturename)
    print(request.scope)
    print("\n=======================request end=================================")


相关文章
|
JavaScript 前端开发 搜索推荐
【庖丁解牛】vue-element-admin前端CRUD通用操作组件详解
【庖丁解牛】vue-element-admin前端CRUD通用操作组件详解
2154 0
【庖丁解牛】vue-element-admin前端CRUD通用操作组件详解
|
存储 SQL JSON
AntiSamy:防 XSS 攻击的一种解决方案使用教程
AntiSamy:防 XSS 攻击的一种解决方案使用教程
1486 0
AntiSamy:防 XSS 攻击的一种解决方案使用教程
|
存储 分布式计算 资源调度
如何8步完成hadoop单机安装
本文介绍了在Ubuntu 20.04上安装和配置Hadoop 3.3.6的详细步骤。首先更新系统并安装Java环境,接着下载、解压Hadoop并配置环境变量。然后编辑核心配置文件`core-site.xml`和`hdfs-site.xml`,格式化HDFS文件系统,并启动Hadoop服务。最后通过`jps`命令和浏览器访问Web界面验证安装是否成功。Hadoop是一个开源框架,用于分布式存储和处理大规模数据集,其核心组件包括HDFS、MapReduce和YARN。
996 6
|
存储 Kubernetes API
k8s学习-ConfigMap(创建、使用、更新、删除等)
k8s学习-ConfigMap(创建、使用、更新、删除等)
4070 0
|
存储 缓存 网络协议
搭建dns服务常见报错--查看/etc/named.conf没有错误日志信息却显示出错(/etc/named.conf:49: missing ‘;‘ before ‘include‘)及dns介绍
搭建dns服务常见报错--查看/etc/named.conf没有错误日志信息却显示出错(/etc/named.conf:49: missing ‘;‘ before ‘include‘)及dns介绍
1017 0
|
编解码 人工智能 Linux
SD中的VAE,你不能不懂
要想生成一幅美丽的图片,没有VAE可不行
SD中的VAE,你不能不懂
IDEA之Stream表达式生成、调试
IDEA之Stream表达式生成、调试
681 1
|
机器学习/深度学习 设计模式 算法框架/工具
python中的hook函数
经常会听到钩子函数(hook function)这个概念,最近在看目标检测开源框架mmdetection,里面也出现大量Hook的编程方式,那到底什么是hook?hook的作用是什么?【2月更文挑战第1天】
463 0
|
JSON 数据格式
postman 实用教程(含带 token 访问需登录权限的接口、测试文件上传接口、测试文件下载接口)
postman 实用教程(含带 token 访问需登录权限的接口、测试文件上传接口、测试文件下载接口)
7882 0
|
JSON 自然语言处理 机器人
接口自动化测试教程:如何使用 Robot Framework
Robot Framework 是一个用于实现自动化测试和机器人流程自动化(RPA)的开放源代码框架。它由一个名为 Robot Framework Foundation 的组织得到推广,得到了多家领军企业在软件开发中的广泛应用。框架以其开放性和灵活性为特点,能够无缝整合各种其他工具,无论团队规模大小,均无需承担额外许可成本。