• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

32-pytest-内置fixture:request使用

武飞扬头像
爱学习de测试小白
帮助1


前言

  • 本篇来学习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=================================")

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhhkbejg
系列文章
更多 icon
同类精品
更多 icon
继续加载