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中只有值传递,也有些地方说引用传递和值传递都存在,比较容易让人迷惑.关于值传递和引用传递其实需要分情况看待,今天学习 ...
随机推荐
- VLAN实验(5)三层交换
1.选择1台S5700和3台pc机,并根据实验编址完成此拓扑图. 2.检查连通性 (1)因为mengyu-PC1和mengyu-PC2在一个地址段上,可以ping通 (2)因为mengyu-PC1和m ...
- pytest-2:allure 的安装、使用
版本对应: python3.4==>allure-pytest2.7.0 python3.6==>allure0pytest2.8.6 环境安装: 1.先安装好对应的python,准备好p ...
- 关于一个.2lf和.2f的战争!(貌似书上错了,静待打脸。)
在山东理工oj上做题,谈到了输入数据... double i: scanf(“%lf”,&i): 谨记呀,lf时,可以输入任何类型的数据,而.2f,只能输入符合其规格的数据. 再谈输出,dou ...
- 正睿暑期培训day1考试
链接 A 理解一下题意,然后玩几组样例就能发现,实际上就是\(k\)个\(i\)等价于\(1\)个\(i-1\).所以就类似于\(k\)进制进行进位,如果最后\(0\)位上不是\(0\),那么就存在划 ...
- 自已开发IM有那么难吗?手把手教你自撸一个Andriod版简易IM (有源码)
本文由作者FreddyChen原创分享,为了更好的体现文章价值,引用时有少许改动,感谢原作者. 1.写在前面 一直想写一篇关于im即时通讯分享的文章,无奈工作太忙,很难抽出时间.今天终于从公司离职了, ...
- 海边拾贝-A-算法篇
收集若干算法博客地址,不定期会更新: 算法 陈浩,leetcode 的C++解法 https://github.com/haoel/leetcode 王亮,很多题目讲解的比较详细 https:/ ...
- liunx下安装mysql-5.7.25-linux-glibc2.12-x86_64.tar.gz
1.解压准备一个赶紧的环境,然后安装mysql. 2.cd到/usr/local/目录下,修改文件名为mysql 修改完目录名以后我们cd到mysql下,建立一个data目录命令:cd mysql/ ...
- HDU 6148 (数位DP)
### HDU 6148 题目链接 ### 题目大意: 众所周知,度度熊非常喜欢数字. 它最近发明了一种新的数字:Valley Number,像山谷一样的数字. 当一个数字,从左到右依次看过去数字没有 ...
- COMP222 - 2019
COMP222 - 2019 - Second CA AssignmentIndividual courseworkTrain Deep Learning AgentsAssessment Infor ...
- 软件 ---- intelij IDEA安装
官网下载, 下载地址: https://www.jetbrains.com/idea/download/#section=windows 版本说明:Ultimate 为旗舰版,功能全面,按年收费,这个 ...