Pytest中我们经常会用到数据参数化,我们来介绍下装饰器@pytest.fixture()配合request传参的使用

user = request.param

如果想把登录操作放到前置操作里,也就是用到@pytest.fixture装饰器,传参就用默认的request参数
user = request.param 这一步是接收传入的参数,本案例是传一个参数情况

@pytest.mark.parametrize("input_user",user_list,indirect=True)中indirect=True

是指用user_list、pwd_list数据对“input_user”、“input_pwd”这个fixture进行参数化,虽然装饰器写在测试用例上,但是却是对测试用例使用的fixture进行传递数据,这正是indirect的意思.

request传多个参数、多个fixtrue

import pytest
user_list=['wangxiao','zhangxiao']
pwd_list=['123456','123']
@pytest.fixture(scope="module")
def input_user(request):user=request.paramprint("用户名:%s"%user)return user
@pytest.fixture(scope="module")
def input_pwd(request):pwd = request.paramprint("密码:%s"%pwd)return pwd
@pytest.mark.parametrize("input_user",user_list,indirect=True)
@pytest.mark.parametrize("input_pwd",pwd_list,indirect=True)
def test_login(input_user,input_pwd):print(input_user,input_pwd)
if __name__=='__main__':pytest.main(['-s','test01.py'])"C:\Program Files\Python35\python.exe" C:/Users/wangli/PycharmProjects/Test/test/test01.py
============================= test session starts =============================
platform win32 -- Python 3.5.2, pytest-5.1.2, py-1.8.0, pluggy-0.12.0
rootdir: C:\Users\wangli\PycharmProjects\Test\test
plugins: allure-pytest-2.8.5, html-1.22.0, metadata-1.8.0
collected 4 itemstest01.py 用户名:wangxiao
密码:123456
wangxiao 123456
.用户名:zhangxiao
zhangxiao 123456
.密码:123
zhangxiao 123
.用户名:wangxiao
wangxiao 123
.============================== 4 passed in 0.06s ==============================Process finished with exit code 0

request传多个参数、单个fixtrue

import pytest
user_list=[('wangxiao','123'),('chengzi','123456')]@pytest.fixture(scope="module")
def login(request):user = request.parampwd = request.paramprint("用户名:%s,密码:%s"%(user,pwd))return user,pwd@pytest.mark.parametrize("login",user_list,indirect=True)
def test_login(login):print(login)
if __name__=='__main__':pytest.main(['-s','test01.py'])"C:\Program Files\Python35\python.exe" C:/Users/wangli/PycharmProjects/Test/test/test01.py
============================= test session starts =============================
platform win32 -- Python 3.5.2, pytest-5.1.2, py-1.8.0, pluggy-0.12.0
rootdir: C:\Users\wangli\PycharmProjects\Test\test
plugins: allure-pytest-2.8.5, html-1.22.0, metadata-1.8.0
collected 2 itemstest01.py 用户名:('wangxiao', '123'),密码:('wangxiao', '123')
(('wangxiao', '123'), ('wangxiao', '123'))
.用户名:('chengzi', '123456'),密码:('chengzi', '123456')
(('chengzi', '123456'), ('chengzi', '123456'))
.============================== 2 passed in 0.04s ==============================Process finished with exit code 0

Pytest fixture之request传参相关推荐

  1. 第一课 request传参

    一.requests请求方式 1.requests请求任何方式都会再次调用一次request,所以我们可以直接调用request requests.request(get,url=url,params ...

  2. flask request传参

    1.位置参数 <>是转换器,内容既可当成视图函数的参数 @app.route('/users/<user_id>') def user_info(user_id):return ...

  3. fixture之request

    request是pytest的内置fixture.请求对象提供了访问请求测试上下文的权限,并且在fixture被间接参数化的情况下具有可选的"param"属性. 1. reques ...

  4. 用pytest.fixture处理接口自动化跨文件token传参

    大部分的接口都需要在headers中传入token参数,原来的方式是在case文件的setup中调用gettoken方法拿到token,存入一个变量,然后在每个case中使用这个token变量 但后面 ...

  5. pytest_函数传参和firture传参数request

    前言 为了提高代码的复用性,我们在写用例的时候,会用到函数,然后不同的用例去调用这个函数. 比如登录操作,大部分的用例都会先登录,那就需要把登录单独抽出来写个函数,其它用例全部的调用这个登陆函数就行. ...

  6. pytest命令行传参

    前言 命令行参数是根据命令行选项将不同的值传递给测试函数,比如平常在cmd执行"pytest --html=report.html",这里面的"--html=report ...

  7. pytest框架中parametrize、fixture、request怎么混合使用?

    一.前言 作为软件测试工程师想必大家对于pytest框架并不陌生吧,那么今天呢笔者想和大家唠唠pytest框架中的parametrize.fixture.request的混合使用,如果你还不知道什么是 ...

  8. python之scrapy:攻克技术点ASP.NET分页处理、request和response传参、pipeline区分传来Items

    上面一篇介绍了scrapy抓取的大概架构,此篇文章针对一些技术问题进行展开说明. 一.如何处理ASP.NET分页 我们还是深圳房地产信息系统为例, 因为之前一直是写ASP.NET的,.NET很多控件都 ...

  9. jfinal ajax传值,JFINAL+Ajax传参 array 数组方法 获取request中数组操作

    前台代码js var _list =[]; for (var i = 0; i < array.length; i++) { _list[i] = array[i]; } $.ajax({ ty ...

最新文章

  1. linux init进程是所有用户进程的祖先进程,Linux中init进程介绍及常用方法
  2. 三星s8自带测试硬件软件,三星S8手机国行固件开启测试:或支持桌面级操作体验...
  3. outlook正在与服务器联系以获取信息,Outlook 2016点击邮件显示正在与服务器联系以获取信息...
  4. javascript学习(三) 内置对象
  5. 华为emui10是鸿蒙,昨日,华为EMUI10,鸿蒙系统正式发布!
  6. Linux终端光标消失问题
  7. php socket 心跳机制,socket学习纪录2: workerman 心跳功能实现
  8. creportctrl 排序_witclient 智能客户端
  9. python显示no matching distribution,Python使用pip安装No matching distribution found for PyYaml==5.3.1...
  10. java 与 数据库的连接
  11. python做一个本地搜索_用 python, django 实现的一个很简单的搜索引擎
  12. Es6 类class的关键 super、static、constructor、new.target
  13. 03_后台管理页面商品列表查询
  14. python乱码大赛_FishC工作室《零基础学python》全套课后题.doc
  15. mysql哨兵模式_redis 哨兵模式集群搭建
  16. 博客地址迁移到http://blog.csdn.net/sunansheng
  17. 死锁简述(死锁产生的四个条件,预防死锁)
  18. Origin2018怎么画出向上向下的柱状图
  19. 2021年中国频谱分析仪行业市场规模、格局及专利情况分析:行业规模不断扩大,国外企业占据主导地位,国产企业发展空间较大[图]
  20. 《自控》学习笔记一——自动控制的一般概念(一)

热门文章

  1. java有几种变量_java有多少种变量?java类变量怎么使用?
  2. mysql开启yum search pt-mysql_Centos使用MySQL工具Percona Toolkit
  3. C语言中输入123求位权,数反转 - it610.com
  4. android 九宫格封装,Android 九宫格布局
  5. docker 运行容器_Docker之运行 Django 容器
  6. MySQL 优化 —— EXPLAIN 执行计划详解
  7. Java核心篇之HashMap--day6
  8. java环境变量javac不能成功 win7_配置Java环境
  9. 联想平板刷机机器人_消费终端年出货量破1.2亿,杨元庆:联想是智能化转型的赋能者...
  10. vue watch 修改滚动条_Vue 里的 computed 和 watch 的区别