pytest_fixture通过参数request获取测试数据,并在fixture方法里面使用
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方法里面使用的更多相关文章
- Request获取url各种信息的方法
1.Request获取url各种信息的方法 测试的url地址:http://www.test.com/testweb/default.aspx, 结果如下: Request.ApplicationPa ...
- jsp Request获取url信息的各种方法比较
从Request对象中可以获取各种路径信息,以下例子: 假设请求的页面是index.jsp,项目是WebDemo,则在index.jsp中获取有关request对象的各种路径信息如下 String p ...
- request获取数据的几种方法
1.request.getparameter(); String value=request.getparameter("key"); 2.request.getParameter ...
- python request 获取cookies value值的方法
import requests res = requests.get(url) cookies = requests.utils.dict_from_cookiejar(res.cookies) pr ...
- request获取各种路径总结、页面跳转总结。
页面跳转总结 JSP中response.sendRedirect()与request.getRequestDispatcher().forward(request,response)这两个对象都可以使 ...
- request 获取请求参数
/** * 根据request获取请求的用户参数 * @return * @return */ protected <T> T getParamConvertEntity(Class cl ...
- django 使用 request 获取浏览器发送的参数
django 使用 request 获取浏览器发送的参数 转载请注明出处 https://blog.csdn.net/fanlei5458/article/details/80638348 获 ...
- flask包request获取参数
原博文:https://www.cnblogs.com/wangjikun/p/6935592.html request.method #获取请求方法request.form #获取post请求所有参 ...
- 入门servlet:request获取请求参数通用方式
一.获取请求参数通用方式 1. String getParameter(String name):根据参数名称获取参数值 例:username=flypig&password=2343 2. ...
- pytest 12 函数传参和fixture传参数request
前沿: 有的case,需要依赖于某些特定的case才可以执行,比如,登陆获取到的cookie,每次都需要带着他,为了确保是同一个用户,必须带着和登陆获取到的同一个cookies. 大部分的用例都会先登 ...
随机推荐
- Java Spring项目中的CORS跨域开启的几种方式
引 在服务器端开启跨域的原理,一般都是通过在HTTP Headers中的响应头的Access-Control-Allow-Origin指定放行的域,来完成的. Access-Control-Allow ...
- 6.Ingress 七层负载
官方文档:https://kubernetes.io/zh-cn/docs/concepts/services-networking/ingress/题目: 设置配置环境: [candidate@no ...
- Pod入门知识(4)
一.Pod是什么? 官方文档:https://kubernetes.io/docs/concepts/workloads/pods/ Pod 是 Kubernetes 中的最小调度单元,k8s 是通过 ...
- Lua 学习笔记(自用)
Lua 学习笔记 1 语言基础 运行方式类似Python,可以直接在交互行运行,也可以通过解释器运行某个脚本.也可以在交互行运行某个lua脚本 dofile("hello.lua" ...
- 【爬虫GUI】YouTube评论采集软件,突破反爬,可无限爬取!
目录 一.背景介绍 1.1 软件说明 1.2 效果演示 二.科普知识 2.1 关于视频id 2.2 关于评论时间 三.爬虫代码 3.1 界面模块 3.2 爬虫模块 3.3 日志模块 四.获取源码及软件 ...
- 国外anonfiles网盘大文件下载器
各位注意了,这个网站很久以前是可以国内直接访问的,后来被墙了,但仍然可以使用代理下载,现如今,6天前大概2023年8月10号左右这个网站已经挂了,就是彻底不能用了,所有与之有关的东西比如网页,都是假的 ...
- ruby 定时器 rufus-scheduler
安装 gem install rufus-scheduler ruby #!/usr/bin/env ruby require 'rubygems' require 'rufus-scheduler' ...
- Chrome 插件 V3 版本 Manifest.json 中的内容脚本(Content Scripts)解析
内容脚本(Content Scripts) 指定在用户打开某些网页时要使用的 JavaScript 或 CSS 文件. 内容脚本是在网页环境中运行的文件.通过使用标准文档对象模型 (DOM),开发者能 ...
- JDK源码阅读-------自学笔记(十六)(java.util.Random随机数类)
Random类简介 如果使用Math.random()计算过于复杂的话,我们可以使用例外一种方式得到随机数,即Random类,这个类是专门用来生成随机数的,并且Math.random()底层调用的就是 ...
- Django RESTful API设计与实践指南
title: Django RESTful API设计与实践指南 date: 2024/5/14 15:37:45 updated: 2024/5/14 15:37:45 categories: 后端 ...