• 用法简介:
  • 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初始化的更多相关文章

  1. Pytest学习(三) - setup和teardown的使用

    一.前言 从文章标题可以看出,就是初始化和释放的操作,根据我的java习惯来学习pytest,个人感觉没差太多,理解上也不是很难. 哦,对了,差点跑题了,这个框架是基于Python语言的,在学习的时候 ...

  2. 『德不孤』Pytest框架 — 10、setUp()和tearDown()函数

    目录 1.setUp()和tearDown()函数介绍 2.setUp()和tearDown()函数作用 3.setUp()和tearDown()函数说明 4.示例 (1)方法级 (2)类级 (3)函 ...

  3. pytest自动化2:测试用例setup和teardown

    前言: pytest支持函数和类两种用例方式,针对每种情况都有不同的代码 pytest用例运行级别 模块级(setup_module/teardown_module)开始于模块始末,全局的 函数级(s ...

  4. pytest 2.测试用例setup和teardown

    之前我写的unittest的setup和teardown,还有setupClass和teardownClass(需要配合@classmethod装饰器一起使用),接下来就介绍pytest的类似于这类的 ...

  5. pytest文档4-测试用例setup和teardown

    前言 学过unittest的都知道里面用前置和后置setup和teardown非常好用,在每次用例开始前和结束后都去执行一次. 当然还有更高级一点的setupClass和teardownClass,需 ...

  6. python单元测试框架pytest——fixture函数(类似unitest的setup和teardown)

    pytest的setup和teardown函数(曾被一家云计算面试官问到过). pytest提供了fixture函数用以在测试执行前和执行后进行必要的准备和清理工作.与python自带的unitest ...

  7. python:pytest中的setup和teardown

    原文:https://www.cnblogs.com/peiminer/p/9376352.html 之前我写的unittest的setup和teardown,还有setupClass和teardow ...

  8. pytest的setup和teardown

    学过unittest的setup和teardown,前置和后置执行功能.pytest也有此功能并且功能更强大,今天就来学习一下吧. 用例运行级别: 模块级(setup_module/teardown_ ...

  9. 【pytest】(十二)参数化测试用例中的setup和teardown要怎么写?

    还是一篇关于pytest的fixture在实际使用场景的分享. fixture我用来最多的就是写setup跟teardown了,那么现在有一个用例是测试一个列表接口,参数化了不同的状态值传参,来进行测 ...

随机推荐

  1. mysql数据同步

    随着各行业信息化水平的不断提升,各种各样的信息管理系统都被广泛使用,各系统间数据完全独立,形成了大量的信息孤岛.出于管理及决策方面的需求,实现各平台的数据同步是一个很迫切的需求,TreeSoft数据库 ...

  2. BZOJ P1059 [ZJOI2007]矩阵游戏——solution

    1059: [ZJOI2007]矩阵游戏 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 4604  Solved: 2211[Submit][Stat ...

  3. 洛谷P3939 数颜色(二分 vector)

    题意 题目链接 Sol 直接拿vector维护每种颜色的出现位置,然后二分一下. #include<bits/stdc++.h> using namespace std; const in ...

  4. cf1060D. Social Circles(贪心)

    题意 题目链接 Sol 我是这样考虑的:从大到小考虑每个\(l, r\),最大的\(l\)应该和最大的\(r\)匹配(不然就亏了),其次次大的\(r\)应该和次大的\(l\)匹配 然后就过了.. /* ...

  5. 为什么推荐用ui-router替代ngRoute

    初学angularjs,第一个实例是官网的phoneCat,里面路由用的是ngRoute,后来看到别的用ui-router,觉得好奇,ui-route是什么呢?百度一些,得到如下解释: ui-rout ...

  6. js图片跟随鼠标移动

    <div id="wrapper"><img src="http://images.cnblogs.com/cnblogs_com/rain-null/ ...

  7. 相比之前其他几个入门的, 推荐: 简单vue2 入门教程

    注意:Vue.js 不支持 IE8 及其以下 IE 版本.       具体可以看下  http://www.runoob.com/vue2/vue-tutorial.html 以下是学习过程 Vue ...

  8. 从golang-gin-realworld-example-app项目学写httpapi (六)

    https://github.com/gothinkster/golang-gin-realworld-example-app/blob/master/users/validators.go 验证器 ...

  9. VC 6.0 MFC关闭对话框在win7出现崩溃的情况

    Ctrl + W 掉出来class管理 添加OnDestory方法 void CPackUpItemToSetDlg::OnDestroy() { exit(1); CDialog::OnDestro ...

  10. innerHTML,innerText,textContent,outerHTML的用法以及区别

    innerHTML获取的是对象起始的位置到终止位置全部内容,包含html标签. innerText和textContent结果是一样的,不包含标签,直接获取标签内的内容,区别是两者浏览器的兼容性. o ...