pytest setup和teardown初始化
- 用法简介:
- setup_method:仅作用于class用例集中的用例,置于class内,每个用例都会调用一次
- setup_function:作用于独立的def用例,不可作用于class内的用例
- setup_class:作用于class用例集中的用例,置于class内,只在class用例执行的开始执行setup_class,结束时执行teardown_class
- setup_module:作用于模块内的所有用例,置于class外,只在所以用例的开始执行setup_module,结束时执行teardown_module
- pytest.fixture():作用于模块内的所有用例,但需要传递装饰函数为参数,可置于class内或class外
1.setup_class 和teardown_class用法
# coding=utf-8
import pytest
from selenium import webdriver
import time
class Test(object):
@classmethod
def setup_class(cls):
print("初始化浏览器")
cls.driver=webdriver.Chrome()
cls.driver.maximize_window()
time.sleep(2)
cls.driver.get("http://www.baidu.com")
@classmethod
def teardown_class(cls):
cls.driver.close()
print("关闭浏览器")
def test_in01(self):
self.driver.find_element_by_id("kw").send_keys("流浪的python")
self.driver.find_element_by_id("su").click()
print("0001 is ok")
def test_in02(self):
self.driver.find_element_by_xpath('//*[@id="s_tab"]/div/a[1]').click()
time.sleep(3)
print("002 is ok ")
============================= test session starts =============================
platform win32 -- Python 3.7.2, pytest-4.1.1, py-1.7.0, pluggy-0.8.1
rootdir: D:\Pycharm\PyCharm 5.0.4\jre\jre\bin, inifile:
plugins: xdist-1.26.0, rerunfailures-6.0, metadata-1.8.0, html-1.20.0, forked-1.0.1, allure-pytest-2.5.4
collected 2 items
. 初始化浏览器
0001 is ok
.002 is ok
.关闭浏览器
2.setup_method 和teardown_method 用法
class TestMethod(object):
def setup_method(self):
print("初始化浏览器")
self.driver=webdriver.Chrome()
self.driver.maximize_window()
self.driver.get("http://www.baidu.com")
def teardown_method(self):
self.driver.close()
print("关闭浏览器")
def test_in01(self):
self.driver.find_element_by_id("kw").send_keys("流浪的python")
self.driver.find_element_by_id("su").click()
print("第一次打开浏览器is ok")
def test_in02(self):
self.driver.find_element_by_id("kw").send_keys("流浪的python")
self.driver.find_element_by_id("su").click()
self.driver.find_element_by_xpath('//*[@id="s_tab"]/div/a[1]').click()
time.sleep(3)
print("第二次打开浏览器 is ok ")
============================= test session starts =============================
platform win32 -- Python 3.7.2, pytest-4.1.1, py-1.7.0, pluggy-0.8.1
rootdir: D:\Pycharm\PyCharm 5.0.4\jre\jre\bin, inifile:
plugins: xdist-1.26.0, rerunfailures-6.0, metadata-1.8.0, html-1.20.0, forked-1.0.1, allure-pytest-2.5.4
collected 2 items
. 初始化浏览器
第一次打开浏览器is ok
.关闭浏览器
初始化浏览器
第二次打开浏览器 is ok
.关闭浏览器
3. pytest.fixture用法介绍
# coding=utf-8
import pytest
from selenium import webdriver
from pyfoo.Utils.pageobj import GetEle
from pyfoo.Utils.pageobj import *
@pytest.fixture(scope="class")
def driver():
url="http://www.baidu.com"
driver= webdriver.Chrome()
driver.get(url)
print("初始化完成...")
yield driver
driver.close()
print("teardown...关闭浏览器")
# @pytest.mark.usefixtures("driver")
class Test_fix_module(object):
def test_open_bd(self,driver):
GetEle().ele_by_id(driver,'kw').send_keys("pytest")
GetEle().ele_by_id(driver,'su').click()
print("搜索资源case成功")
def test_open_tb(self,driver):
GetEle().ele_by_xpath(driver,'//*[@id="s_tab"]/div/a[1]').click()
print("进入资讯case成功")
if __name__ == "__main__":
pytest.main(['-v','-s','-q'])
============================= test session starts =============================
platform win32 -- Python 3.7.2, pytest-4.1.1, py-1.7.0, pluggy-0.8.1
rootdir: D:\Pycharm\PyCharm 5.0.4\jre\jre\bin, inifile:
plugins: xdist-1.26.0, rerunfailures-6.0, metadata-1.8.0, html-1.20.0, forked-1.0.1, allure-pytest-2.5.4
collected 2 items
. 初始化完成...
搜索资源case成功
.进入资讯case成功
.teardown...关闭浏览器
4.setup_module 和teardown_module
# coding=utf-8
import pytest
from selenium import webdriver
import time
def setup_module():
global driver
driver=webdriver.Chrome()
driver.maximize_window()
time.sleep(2)
driver.get("http://www.baidu.com")
print("开始模块初始化浏览器")
def teardown_module():
driver.close()
print("模块执行结束关闭浏览器")
class TestModule(object):
def test_001(self):
driver.find_element_by_id("kw").send_keys("流浪的python")
driver.find_element_by_id("su").click()
print("test_001 is ok ")
def test_002(self):
driver.find_element_by_xpath('//*[@id="s_tab"]/div/a[1]').click()
time.sleep(3)
print("test_002 is ok ")
============================= test session starts =============================
platform win32 -- Python 3.7.2, pytest-4.1.1, py-1.7.0, pluggy-0.8.1
rootdir: D:\Pycharm\PyCharm 5.0.4\jre\jre\bin, inifile:
plugins: xdist-1.26.0, rerunfailures-6.0, metadata-1.8.0, html-1.20.0, forked-1.0.1, allure-pytest-2.5.4
collected 2 items
. 开始模块初始化浏览器
test_001 is ok
.test_002 is ok
.模块执行结束关闭浏览器
5.setup_function 和 teardown_function
# coding=utf-8
import pytest
from selenium import webdriver
import time
def setup_function():
print("setup_function():每个函数之前执行")
def teardown_function():
print ("teardown_function():每个函数之后执行")
def test_01():
print ("正在执行函数test1")
x = "this"
assert 'h' in x
def add(a,b):
return a+b
def test_add():
print ("正在执行test_add()")
assert add(3,4) == 7
============================= test session starts =============================
platform win32 -- Python 3.7.2, pytest-4.1.1, py-1.7.0, pluggy-0.8.1
rootdir: D:\Pycharm\PyCharm 5.0.4\jre\jre\bin, inifile:
plugins: xdist-1.26.0, rerunfailures-6.0, metadata-1.8.0, html-1.20.0, forked-1.0.1, allure-pytest-2.5.4
collected 2 items
. setup_function():每个函数之前执行
正在执行函数test1
.teardown_function():每个函数之后执行
setup_function():每个函数之前执行
正在执行test_add()
.teardown_function():每个函数之后执行
pytest setup和teardown初始化的更多相关文章
- Pytest学习(三) - setup和teardown的使用
一.前言 从文章标题可以看出,就是初始化和释放的操作,根据我的java习惯来学习pytest,个人感觉没差太多,理解上也不是很难. 哦,对了,差点跑题了,这个框架是基于Python语言的,在学习的时候 ...
- 『德不孤』Pytest框架 — 10、setUp()和tearDown()函数
目录 1.setUp()和tearDown()函数介绍 2.setUp()和tearDown()函数作用 3.setUp()和tearDown()函数说明 4.示例 (1)方法级 (2)类级 (3)函 ...
- pytest自动化2:测试用例setup和teardown
前言: pytest支持函数和类两种用例方式,针对每种情况都有不同的代码 pytest用例运行级别 模块级(setup_module/teardown_module)开始于模块始末,全局的 函数级(s ...
- pytest 2.测试用例setup和teardown
之前我写的unittest的setup和teardown,还有setupClass和teardownClass(需要配合@classmethod装饰器一起使用),接下来就介绍pytest的类似于这类的 ...
- pytest文档4-测试用例setup和teardown
前言 学过unittest的都知道里面用前置和后置setup和teardown非常好用,在每次用例开始前和结束后都去执行一次. 当然还有更高级一点的setupClass和teardownClass,需 ...
- python单元测试框架pytest——fixture函数(类似unitest的setup和teardown)
pytest的setup和teardown函数(曾被一家云计算面试官问到过). pytest提供了fixture函数用以在测试执行前和执行后进行必要的准备和清理工作.与python自带的unitest ...
- python:pytest中的setup和teardown
原文:https://www.cnblogs.com/peiminer/p/9376352.html 之前我写的unittest的setup和teardown,还有setupClass和teardow ...
- pytest的setup和teardown
学过unittest的setup和teardown,前置和后置执行功能.pytest也有此功能并且功能更强大,今天就来学习一下吧. 用例运行级别: 模块级(setup_module/teardown_ ...
- 【pytest】(十二)参数化测试用例中的setup和teardown要怎么写?
还是一篇关于pytest的fixture在实际使用场景的分享. fixture我用来最多的就是写setup跟teardown了,那么现在有一个用例是测试一个列表接口,参数化了不同的状态值传参,来进行测 ...
随机推荐
- mysql数据同步
随着各行业信息化水平的不断提升,各种各样的信息管理系统都被广泛使用,各系统间数据完全独立,形成了大量的信息孤岛.出于管理及决策方面的需求,实现各平台的数据同步是一个很迫切的需求,TreeSoft数据库 ...
- BZOJ P1059 [ZJOI2007]矩阵游戏——solution
1059: [ZJOI2007]矩阵游戏 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 4604 Solved: 2211[Submit][Stat ...
- 洛谷P3939 数颜色(二分 vector)
题意 题目链接 Sol 直接拿vector维护每种颜色的出现位置,然后二分一下. #include<bits/stdc++.h> using namespace std; const in ...
- cf1060D. Social Circles(贪心)
题意 题目链接 Sol 我是这样考虑的:从大到小考虑每个\(l, r\),最大的\(l\)应该和最大的\(r\)匹配(不然就亏了),其次次大的\(r\)应该和次大的\(l\)匹配 然后就过了.. /* ...
- 为什么推荐用ui-router替代ngRoute
初学angularjs,第一个实例是官网的phoneCat,里面路由用的是ngRoute,后来看到别的用ui-router,觉得好奇,ui-route是什么呢?百度一些,得到如下解释: ui-rout ...
- js图片跟随鼠标移动
<div id="wrapper"><img src="http://images.cnblogs.com/cnblogs_com/rain-null/ ...
- 相比之前其他几个入门的, 推荐: 简单vue2 入门教程
注意:Vue.js 不支持 IE8 及其以下 IE 版本. 具体可以看下 http://www.runoob.com/vue2/vue-tutorial.html 以下是学习过程 Vue ...
- 从golang-gin-realworld-example-app项目学写httpapi (六)
https://github.com/gothinkster/golang-gin-realworld-example-app/blob/master/users/validators.go 验证器 ...
- VC 6.0 MFC关闭对话框在win7出现崩溃的情况
Ctrl + W 掉出来class管理 添加OnDestory方法 void CPackUpItemToSetDlg::OnDestroy() { exit(1); CDialog::OnDestro ...
- innerHTML,innerText,textContent,outerHTML的用法以及区别
innerHTML获取的是对象起始的位置到终止位置全部内容,包含html标签. innerText和textContent结果是一样的,不包含标签,直接获取标签内的内容,区别是两者浏览器的兼容性. o ...