pytest fixture传参request的使用

获取request对pytest插件的版本有要求,如果找不到request报错的话, 建议先升级pytest的版本

要实现的效果

执行测试用例,调用到只执行一次的fixture方法(scope=session/class/module),可以获取请求参数里面的用户名和密码,用于登录

问题

定义了一个session或module范围的fixture方法,直接将测试数据作为参数传入到方法,会报错,大概意思是执行一次的方法,不能接受所有符合要求的测试数据,导致获取不到登录的用户和密码,结合应用场景,不想通过将数据写死的方式来实现

“ScopeMismatch: You tried to access the function scoped fixture test_data wit”

@pytest.fixture(scope="module")  # 当前.py文件下只执行一次;
def session_login_success(pytestconfig, test_data): // test_data是测试用例里面传递的数据
username = test_data["username"]
test_data是测试用例里面传递的数据
    @pytest.mark.usefixtures("session_login_success")
@pytest.mark.parametrize("test_data", data)
def test_smoke(self, session_login_success, test_data):
print("test")

解决方法:使用fixture的request

Request用于接受传参,正在执行的测试用例的数据,都在request里面,可以debug模式查看这个对象返回的数据

使用request.param取值报错:'SubRequest' object has no attribute 'param'

@pytest.fixture(scope="module")  # 当前.py文件下只执行一次;
def session_login_success(pytestconfig, request):
res1 = request.param

Debug模式,查看request返回的数据,里面没有param,所以会报错

获取到这个request,然后逐层查看返回的对象里面包含的数据,哪些数据才是想要的,然后进行取值

开启debug模式,加断点,查看返回的request对象的数据

逐层往下找,找到存放测试用例数据的地方,如下图找到在受保护的属性值里面,有需要的用户和密码

最后通过逐层取值,和字典取值方式,取到用户名和密码

最终实现的结果:

@pytest.fixture(scope="module")
def session_login_success(pytestconfig, request):
req_data = request._pyfuncitem.callspec.params["test_data"]
username = req_data["username"]
pwd = req_data["password"]
driver = open_browse(pytestconfig)
LoginPage(driver).Login(username=username, pwd=pwd)
LoginPage(driver).wait_page_load_finish()
yield driver
driver.quit()

pytest_fixture通过参数request获取测试数据,并在fixture方法里面使用的更多相关文章

  1. Request获取url各种信息的方法

    1.Request获取url各种信息的方法 测试的url地址:http://www.test.com/testweb/default.aspx, 结果如下: Request.ApplicationPa ...

  2. jsp Request获取url信息的各种方法比较

    从Request对象中可以获取各种路径信息,以下例子: 假设请求的页面是index.jsp,项目是WebDemo,则在index.jsp中获取有关request对象的各种路径信息如下 String p ...

  3. request获取数据的几种方法

    1.request.getparameter(); String value=request.getparameter("key"); 2.request.getParameter ...

  4. python request 获取cookies value值的方法

    import requests res = requests.get(url) cookies = requests.utils.dict_from_cookiejar(res.cookies) pr ...

  5. request获取各种路径总结、页面跳转总结。

    页面跳转总结 JSP中response.sendRedirect()与request.getRequestDispatcher().forward(request,response)这两个对象都可以使 ...

  6. request 获取请求参数

    /** * 根据request获取请求的用户参数 * @return * @return */ protected <T> T getParamConvertEntity(Class cl ...

  7. django 使用 request 获取浏览器发送的参数

    django 使用 request 获取浏览器发送的参数     转载请注明出处 https://blog.csdn.net/fanlei5458/article/details/80638348 获 ...

  8. flask包request获取参数

    原博文:https://www.cnblogs.com/wangjikun/p/6935592.html request.method #获取请求方法request.form #获取post请求所有参 ...

  9. 入门servlet:request获取请求参数通用方式

    一.获取请求参数通用方式 1. String getParameter(String name):根据参数名称获取参数值 例:username=flypig&password=2343 2. ...

  10. pytest 12 函数传参和fixture传参数request

    前沿: 有的case,需要依赖于某些特定的case才可以执行,比如,登陆获取到的cookie,每次都需要带着他,为了确保是同一个用户,必须带着和登陆获取到的同一个cookies. 大部分的用例都会先登 ...

随机推荐

  1. [FE] Canvas 转图片并下载的方式

    先获取 canvas 节点,使用 toDataURL 转为 image 数据,最后使用 a 链接下载. // Trans to image const canvas = document.getEle ...

  2. 数据改变后更新UI(SetProperty/RaiseCanExecuteChanged)

    View代码 1 <StackPanel> 2 <TextBlock Text="方法一"></TextBlock> 3 <TextBox ...

  3. 02 Orcad设计环境讲解与工程创建

    02   Orcad设计环境讲解与工程创建 学习目标: 1)   掌握Orcad软件绘制元件库以及原理图的方法: 2)   掌握Allegro软件绘制PCB库以及PCB的方法: 3)   掌握Orca ...

  4. Unity热更学习笔记--AB包的依赖 0.98

    AB包的依赖 接上一小结. 在这里我们新建一个红色材质球,赋值给Cube预制体.此时不对材质球进行AB包分类,再次进行打包.运行脚本,发现红色cube成功的从AB包中加载出来.尽管我们没有将cube所 ...

  5. C#.NET体系图文概述—2024最全总结

    C# 是一种简单.现代.面向对象和类型安全的编程语言.. .NET 是由 Microsoft 创建的开发平台,平台包含了语言规范.工具.运行,支持开发各种应用,如Web.移动.桌面等..NET框架有多 ...

  6. nim 4. 模块

    看了一下nim的模块系统,真的非常简洁. 1) 一个nim文件就是一个模块 2) 通过import 引入模块,引入的时候不需要带扩展名, 比如有个模块 mod1.nim,  引入的时候: import ...

  7. Android Framework学习之系统启动流程

    最近抽空看了framework一些内存,总结一下,留作后续回顾复习

  8. 前端 PM 分享:PM 需要做的事情

    个人经验分享 PM PM( Project Manager ) PM( Product Manager ) 一.什么情况下需要前端担任 PM? 在我之前遇到的项目中,大多数项目的 PM 是由后端/产品 ...

  9. 【数字基座·智慧物联】AIRIOT新品发布会在京举办

    2023年6月6日,由航天科技控股集团股份有限公司主办的"数字基座·智慧物联"AIRIOT新品发布会在北京成功举办,重磅发布了AIRIOT 4.0物联网平台的五大核心能力引擎,并邀 ...

  10. 记一次Nacos漏洞的复现 --> 身份认证绕过漏洞(QVD-2023-6271)

    前记 端午前两天,遇到公司某客户的站点是Nacos,随后就是网上搜一波漏洞,搜到 QVD-2023-6271,故做以下记录 漏洞复现 漏洞描述 漏洞原理为开源服务管理平台 Nacos在默认配置下未对 ...