pytest中怎么引用前置中的变量
本文主要总结的是pytest中的前置后置怎么返回参数
我们在做自动化的过程中,如果运用的是pytest的话,会遇到怎么使用前置条件中的变量
比如:
@pytest.fixture()
def init_driver():
driver = webdriver.Chrome()
login = LoginPageOperation(driver)
home = HomePageOperation(driver)
driver.get(common_datas.login_url)
driver.maximize_window()
yield
driver.quit()
在这个前置中,我们怎么使用这个driver、login、home呢?
其实我们透过本质来看,这个前置后置本身是一个函数,既然是函数,那么肯定是可以有返回值的,那么问题来了,这个返回值应该在哪里呢?
请看代码:
@pytest.fixture()
def init_driver():
driver = webdriver.Chrome()
login = LoginPageOperation(driver)
home = HomePageOperation(driver)
driver.get(common_datas.login_url)
driver.maximize_window()
yield driver, login, home
driver.quit()
以上标记的地方就是我增加的地方,可以看出这个返回值是跟在yield后面的,而且这个返回值我现在是写的是一个元祖,所有在调用的时候就还能根据索引来调用了,例如:
@pytest.fixture()
def init_driver():
driver = webdriver.Chrome()
login = LoginPageOperation(driver)
home = HomePageOperation(driver)
driver.get(common_datas.login_url)
driver.maximize_window()
yield driver, login, home
driver.quit() class TestLogin: @pytest.mark.usefixtures("init_driver")
def test_success_login(self, init_driver):
"""
登录成功测试用例
"""
init_driver[1].login(test_login_datas.login_success_data["name"], test_login_datas.login_success_data["passwd"])
assert(init_driver[-1].logout_text())
如果这个前置后置继承了其他的前置后置,那么调用被继承的变量该怎么做呢?是不是感觉这个问题很绕,哈哈,看代码吧
@pytest.fixture()
def init():
"""
公共的前置后置
:return: driver, login, home
"""
driver = webdriver.Chrome()
login = LoginPageOperation(driver)
driver.get(common_datas.login_url)
driver.maximize_window()
yield driver, login
driver.quit() @pytest.fixture
def login(init):
home = HomePageOperation(init[0])
yield home, init class TestLogin:从 @pytest.mark.smoke
@pytest.mark.usefixtures("login")
def test_success_login(self, login):
"""
登录成功测试用例
""" login[-1][-1].login(test_login_datas.login_success_data["name"], test_login_datas.login_success_data["passwd"])
assert(login[0].logout_text())
从上面代码可以看出login是继承了init这个函数,然后在我们测试用例中我们是引用了login这个前置后置函数,那么我们在用例中的代码是需要引用init中的driver返回值和login返回值的,所以上面脚本中标记为红色的地方就是我引用init函数里面的login发方法。
透过本质其实可以看出我在login函数里面其实是返回了init的,但是init的返回值其实是有两个的(driver、login),所以我就写成了login[-1][-1]。
pytest中怎么引用前置中的变量的更多相关文章
- 深入PHP中的引用
版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[-] 简单变量引用 对象引用 函数参数传递 函数返回引用 虽然常说做C/C++编程的程序员转做PHP编程很快可以上手,但是对于 ...
- php中引用&的真正理解-变量引用、函数引用、对象引用
php的引用(就是在变量或者函数.对象等前面加上&符号) //最重要就是 删除引用的变量 ,只是引用的变量访问不了,但是内容并没有销毁 在PHP 中引用的意思是:不同的名字访问同一个变量内容. ...
- 内部类访问外部类的变量必须是final吗,java静态方法中不能引用非静态变量,静态方法中不能创建内部类的实例
内部类访问外部类的变量必须是final吗? 如下: package com.java.concurrent; class A { int i = 3; public void shout() { cl ...
- java中使用final关键字修饰一个变量时,是引用不能变,还是引用的对象不能变?
java中使用final关键字修饰一个变量时,是引用不能变,还是引用的对象不能变? 是引用对象的地址值不能变,引用变量所指向的对象的内容是可以改变. final变量永远指向这个对象,是一个常量指针,而 ...
- C++中的引用
一,C++中引用的基础知识 1.引用的基本概念 1.所谓的引用其实就是对变量起“别名”.引用和变量对应得是相同的内存,修改引用的值,变量的值也会改变,和指针类似. 2.引用在定义的时候必须要初始化,初 ...
- php中关于引用(&)详解
php中关于引用(&)详解 php的引用(就是在变量或者函数.对象等前面加上&符号) 在PHP 中引用的意思是:不同的变量名访问同一个变量内容. 与C语言中的指针是有差别的.C语言中的 ...
- 浅谈Java中的引用
在Java语言中,引用是指,某一个数据,代表的是另外一块内存的的起始地址,那么我们就称这个数据为引用. 在JVM中,GC回收的大致准则,是认定如果不能从根节点,根据引用的不断传递,最终指向到一块内存区 ...
- c++中的引用与指针的区别
http://blog.csdn.net/lyd_253261362/article/details/4323691 c++中的引用与指针的区别 ★ 相同点: 1. 都是地址的概念: 指针指向一块内存 ...
- 理解Java中的引用传递和值传递
关于Java传参时是引用传递还是值传递,一直是一个讨论比较多的话题,有论坛说Java中只有值传递,也有些地方说引用传递和值传递都存在,比较容易让人迷惑.关于值传递和引用传递其实需要分情况看待,今天学习 ...
随机推荐
- golang数据结构和算法之StackArray数组堆栈
用数组实现的堆栈, 另一种,是用链表实现的堆栈, 在各种不同的编程语言上, 实现都是类似的. StackArray.go package StackArray //基于数组实现的堆栈 const ar ...
- CentOS单机安装FastDFS&整合Nginx
单机安装 一 准备工作 准备linux服务器或虚拟机,这里是虚拟机,操作系统CentOS 6.4 Tracker 和 Storage 安装在一台机器上 FastDFS 5.08版本 1,准备软件 软件 ...
- 在实际工作中使用requests+unittest进行接口测试
之前学习python做接口测试时,用的时requests+excel的方式来进行接口测试,后来在工作中也用unittest来做了一个项目的接口测试,接口测试用例完全基于unittest来编写,把大致步 ...
- linux的命令操作
linux的命令操作 1.日常操作命令 **查看当前所在的工作目录pwd **查看当前系统的时间 date **查看有谁在线(哪些人登陆到了服务器)who 查看当前在线last 查看最近的登陆历史记录 ...
- js -- 数组的操作(自己的常用备查)
1.数组的定义 var arr = [],或者 var arr = [1,2,3,4,5] 2.数组的使用 >数组的合并 concat ,,]; ,]; a = a.concat(b); con ...
- vue使用--环境搭建与基本项目创建说明
桃之夭夭,思绪纷飞. 一.环境搭建 1.安装node.js(包含包管理工具npm) 安装包可以到node官网进行下载,穿梭>>> 根据自己的操作系统下载相应版本的安装包,运行后按照操 ...
- 二分图学习记 之 KM算法 二分图最大权完美匹配。
前置知识 :匈牙利算法 首先有这样一张图,求这张图的最大权完美匹配. 当然如果你不想看这些渣图的话,您可以转到 洛谷 运动员最佳匹配问题 下面我来强行解释一下KM算法 左边一群妹子找汉子,但是每个妹子 ...
- 下载代码的时候 SSH与http的区别
SSH: git@gitlab.alibaba-inc.com:damai-mz/mz-market.git HTTP:http://gitlab.alibaba-inc.com/damai-mz/m ...
- ubuntu / zsh shell / oh-my-zsh / 常用插件
记录一下 zsh 的下载与配置,省得每次重装系统都要上网到处查. 安装 zsh shell sudo apt install zsh 切换 shell chsh -s /bin/zsh 安装 oh-m ...
- LeetCode 20:有效的括号 Valid Parentheses
给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效. Given a string containing just the characters '(', ' ...