Python Pytest前置setup和后置teardown详解

pytest用例运行级别:
●模块级(setup_module/teardown_module)开始于模块始末,全局的
●函数级(setup_function/teardown_function)只对函数用例生效
●类级(setup_class/teardown_class)只在类中前后运行一次(在类中生效,类外不生效)
●方法级(setup_method/teardown_method)开始于方法始末(在类中生效,类外不生效)
●类里面的(setup/teardown)运行在调用方法的前后(类中生效、类外有函数时生效)

函数级:

函数前置setup_function和后置teardown_function,放类中无效,放类外且类外有函数用例时才生效,每个用例开始前和结束后各调用一次,调用多次

import pytest
def setup_function():print("setup_function:每个用例开始前都会执行")
def teardown_function():print("teardown_function:每个用例结束后都会执行")
def test_one():print("正在执行---test_one")
def test_two():print("正在执行---test_two")
def login():print("正在执行---test_two")
if __name__ == "__main__":pytest.main(["-s","test02.py"])"C:\Program Files\Python35\python.exe" C:/Users/wangli/PycharmProjects/Test/Test/test02.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
collected 2 itemstest02.py setup_function:每个用例开始前都会执行
正在执行---test_one
.teardown_function:每个用例结束后都会执行
setup_function:每个用例开始前都会执行
正在执行---test_two
.teardown_function:每个用例结束后都会执行============================== 2 passed in 0.14s ==============================Process finished with exit code 0

模块前置setup_module和后置teardown_module,放类中无效,放类外且类外有函数用例或类内有函数用例时才生效,整个.py模块开始前和结束后各调用一次

import pytest
def setup_module():print("setup_module:整个.py模块开始执行一次")
def teardown_module():print("teardown_module:整个.py模块结束执行一次")
def setup_function():print("setup_function:每个用例开始前都会执行")
def teardown_function():print("teardown_function:每个用例结束后都会执行")
def test_one():print("正在执行---test_one")
def test_two():print("正在执行---test_two")
def login_test():print("正在执行---test_two")
if __name__ == "__main__":pytest.main(["-s","test02.py"])"C:\Program Files\Python35\python.exe" C:/Users/wangli/PycharmProjects/Test/Test/test02.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
collected 2 itemstest02.py setup_module:整个.py模块开始执行一次
setup_function:每个用例开始前都会执行
正在执行---test_one
.teardown_function:每个用例结束后都会执行
setup_function:每个用例开始前都会执行
正在执行---test_two
.teardown_function:每个用例结束后都会执行
teardown_module:整个.py模块结束执行一次============================== 2 passed in 0.08s ==============================Process finished with exit code 0

类级:

类前置setup_class和后置teardown_class,放类外无效,放类内且类内有函数用例时才生效,类开始前和结束后各执行一次(方法级,调用1次)

方法前置setup_method和后置teardown_method,放类外无效,放类内且类内有函数用例时才生效,每个用例开始前和结束后调用1次(方法级,调用多次)

类里面前置setup和后置teardown,放类内(类内有用例)和类外(有用例)都生效,每个用例开始前和结束后调用1次(函数、方法级,调用多次)

 

setup_class:所有用例执行之前(类级)


setup_method:每个用例开始前执行(方法级)
setup:每个用例开始前执行(调用方法前)
正在执行---test_one
.teardown:每个用例结束后执行(调用方法后)
teardown_method:每个用例结束后执行(方法级)


setup_method:每个用例开始前执行(方法级)
setup:每个用例开始前执行(调用方法前)
正在执行---test_two
.teardown:每个用例结束后执行(调用方法后)
teardown_method:每个用例结束后执行(方法级)


teardown_class:所有用例执行之后(类级)

 

import pytestclass Test():def setup(self):print("setup:每个用例开始前执行(调用方法前)")def teardown(self):print("teardown:每个用例结束后执行(调用方法后)")def setup_class(self):print("setup_class:所有用例执行之前(类级)")def teardown_class(self):print("teardown_class:所有用例执行之后(类级)")def setup_method(self):print("setup_method:每个用例开始前执行(方法级)")def teardown_method(self):print("teardown_method:每个用例结束后执行(方法级)")def test_one(self):print("正在执行---test_one")def test_two(self):print("正在执行---test_two")def login_test(self):print("正在执行---test_two")if __name__ == "__main__":pytest.main(["-s","test02.py"])"C:\Program Files\Python35\python.exe" C:/Users/wangli/PycharmProjects/Test/Test/test02.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
collected 2 itemstest02.py setup_class:所有用例执行之前(类级)
setup_method:每个用例开始前执行(方法级)
setup:每个用例开始前执行(调用方法前)
正在执行---test_one
.teardown:每个用例结束后执行(调用方法后)
teardown_method:每个用例结束后执行(方法级)
setup_method:每个用例开始前执行(方法级)
setup:每个用例开始前执行(调用方法前)
正在执行---test_two
.teardown:每个用例结束后执行(调用方法后)
teardown_method:每个用例结束后执行(方法级)
teardown_class:所有用例执行之后(类级)============================== 2 passed in 0.21s ==============================Process finished with exit code 0

类与函数混合:

setup_module和teardown_module优先级最大

import pytest
def setup_module():print("——setup_module:整个.py模块开始执行一次【函数】")
def teardown_module():print("——teardown_module:整个.py模块结束执行一次【函数】")
def setup_function():print("====setup_function:每个用例开始前都会执行【函数】")
def teardown_function():print("====teardown_function:每个用例结束后都会执行【函数】")
def test_one():print("正在执行---test_one【函数】")
def test_two():print("正在执行---test_two【函数】")
def setup():print("@@@@@setup:每个用例开始前执行(调用方法前)【函数】")
def teardown():print("@@@@@teardown:每个用例结束后执行(调用方法后)【函数】")
class Test():def setup(self):print("setup:每个用例开始前执行(调用方法前)")def teardown(self):print("teardown:每个用例结束后执行(调用方法后)")def setup_class(self):print("setup_class:所有用例执行之前(类级)")def teardown_class(self):print("teardown_class:所有用例执行之后(类级)")def setup_method(self):print("setup_method:每个用例开始前执行(方法级)")def teardown_method(self):print("teardown_method:每个用例结束后执行(方法级)")def test_three(self):print("正在执行---test_one")def test_four(self):print("正在执行---test_two")
if __name__ == "__main__":pytest.main(["-s","test02.py"])"C:\Program Files\Python35\python.exe" C:/Users/wangli/PycharmProjects/Test/Test/test02.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
collected 4 itemstest02.py ——setup_module:整个.py模块开始执行一次【函数】
====setup_function:每个用例开始前都会执行【函数】
@@@@@setup:每个用例开始前执行(调用方法前)【函数】
正在执行---test_one【函数】
.@@@@@teardown:每个用例结束后执行(调用方法后)【函数】
====teardown_function:每个用例结束后都会执行【函数】
====setup_function:每个用例开始前都会执行【函数】
@@@@@setup:每个用例开始前执行(调用方法前)【函数】
正在执行---test_two【函数】
.@@@@@teardown:每个用例结束后执行(调用方法后)【函数】
====teardown_function:每个用例结束后都会执行【函数】
setup_class:所有用例执行之前(类级)
setup_method:每个用例开始前执行(方法级)
setup:每个用例开始前执行(调用方法前)
正在执行---test_one
.teardown:每个用例结束后执行(调用方法后)
teardown_method:每个用例结束后执行(方法级)
setup_method:每个用例开始前执行(方法级)
setup:每个用例开始前执行(调用方法前)
正在执行---test_two
.teardown:每个用例结束后执行(调用方法后)
teardown_method:每个用例结束后执行(方法级)
teardown_class:所有用例执行之后(类级)
——teardown_module:整个.py模块结束执行一次【函数】============================== 4 passed in 0.04s ==============================Process finished with exit code 0

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/568374.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Python】pandas模块操作大型数据集

pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。 Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具。pandas提供了大量能使我们快速便捷地处理数据的函数和方法。 Pandas是python的一个数据分析包…

djangohttp://127.0.0.1:8000/media/test.jpg直接显示图片media配置

文件目录如下: 1、在settings中加入: STATIC_URL /static/ STATICFILES_DIRS (os.path.join(BASE_DIR,static),) #MEDIA_DIR (主要用于获取路径) MEDIA_DIR os.path.join(BASE_DIR,media) # 需要加入的MEDIA_DIR路径变量 #ME…

Python pytest框架之@pytest.fixture()和conftest详解

一、fixture简介 学pytest就不得不说fixture,fixture是pytest的精髓所在,类似unittest中setup/teardown这种前后置东西。但是比它们要强大、灵活很多,它的优势是可以跨文件共享 fixture的目的是提供一个固定基线,在该基线上测试可…

LInux下Ubuntu下查看端口占用及关闭

1、查看所有进程 ps -ef 或者 ps -aux a:显示所有程序 u:以用户为主的格式来显示 x:显示所有程序,不以终端机来区分 2、查看使用某端口的占用 lsof -i:8080 或者: netstat -ap|grep 8090 3、查看到进程id之后,使用netstat命令查看其占用的…

【Python】pandas模块中更改Series的数据类型

今天我们主要解决以下实际问题:一份黑名单数据存储在excel中,由于数据量庞大,现需要通过pandas找到某一列的重复数据,处理后再存入到excel中。 pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的,主…

Python Pytest调用fixture之@pytest.mark.usefixtures()、叠加usefixtures、@pytest.fixture(autouse=True)用法详解

usefixtures与传fixture区别 如果fixture有返回值,那么usefixture就无法获取到返回值,这个是装饰器usefixture与用例直接传fixture参数的区别。 当fixture需要用到return出来的参数时,只能讲参数名称直接当参数传入,不需要用到re…

ubuntu Django项目后台不挂断运行之screen命令

1、安装screen apt install screen 2、新建一个screen screen -S web这样就会新开一个窗口。cd到你需要的目录然后输入你想输入的命令。输入: python manage.py runserver 0.0.0.0:80 3、重新开一个窗口,列出所有screen进程 screen -ls4、如果之前的s…

【Python】Paramiko模块实现Linux服务器远程文件操作

ssh是一个协议,OpenSSH是其中一个开源实现,paramiko是Python的一个库,实现了SSHv2协议(底层使用cryptography)。 有了Paramiko以后,我们就可以在Python代码中直接使用SSH协议对远程服务器执行操作,而不是通过ssh命令对…

Python Pytest中fixture之yield唤醒teardown和终结函数addfinalizer

引入 我们之前学习的都是测试用例的前置固件,也就是相当于“setup”。说到这,细心的你可能想到了,那有没有什么方式可以表示出“teardown”?这就是我们今天学习的yield和addfinalizer。 yield yield是一个关键字,它不…

django项目时间与Ubuntu时间不一致

今天发布项目后才发现log时间和win10系统时间或者date不一致。 查了好多。 最后:是django项目中settings中时区的问题 在settings中默认为UTC时区,我们应转换为中国时区 即做一下修改: LANGUAGE_CODE zh-Hans TIME_ZONE Asia/Shanghai…

【Python】Paramiko模块在Windows10中import ssl报错的处理方法

上一篇文章【Python】Paramiko模块实现Linux服务器远程文件操作 介绍了如何通过Paramiko进行 sftp的操作,但最近遇到一个问题,换上家里的windows10电脑后,执行脚本时发现报错:\lib\site-packages\cryptography\hazmat\bindings\op…

【Jmeter篇】Linux环境下安装部署运行Jmeter

JDK安装和配置 1、使用yum线上安装jdk1.8 yum -y list java* #浏览线上所有jdk版本列表 yum -y list java-1.8*#浏览线上jdk1.7版本列表 yum -y install java-1.8.0-openjdk* #下载安装jdk1.8套件 java -version #检查是否安装成功 2、配置全局环境变量 which java ls -…

django项目连接远程数据库

1、远程数据库开放连接权限 如果连接错误,请考虑 1)用户添加访问其他ip权限 2)3306端口是否开放 3)阿里云服务器安全组规则是否添加3306端口 2、django项目中settings中的host填写远程数据库的公有ip,及填写远程数…

【Python实战】使用python批量生成发票

一般的贸易或者货运型公司,经常需要做发票,有时候我们会遇到需要做大批量重复性的发票时,如果人工一个个去做,即耗时而且容易出错,这时我们可以用的python和excel相关的模块去批量生成。 现在有这样一个场景&#xff…

【Jmeter篇】Jmeter踩坑记(一)

踩坑一: Response code: Non HTTP response code: java.net.SocketTimeoutException Response message: Non HTTP response message: connect timed out 查看Load time的时间要大于request设置的connect time out时间,所以抛出该异常。可能是由于服务端有…

Ajax动态拼接li并绑定事件

一、二对新增元素 再次进行绑定相应事件&#xff0c;例如在 Ajax 中的 success 返回函数中&#xff0c;再执行完新增元素的代码后进行绑定 success: $(body).append("<li idnew> new Li </li>"); //这里统一用click事件为例 $(#new).click(function(){}…

【PS】如何将截图获取的印章迁移到新图片上

有时候我们需要特殊签名或者合同印章时&#xff0c;可以通过其他图片上截图后&#xff0c;经过处理后放置到新的图片上&#xff0c;这个时候我们可以通过ps进行处理&#xff0c;主要三个流程&#xff1a; 1.截取需要的签名或印章&#xff0c;用ps消除多余的信息&#xff1b; 2…

【Jmeter篇】Jmeter分布式调度压测部署

Jmeter 是java 应用&#xff0c;对于CPU和内存的消耗比较大&#xff0c;因此&#xff0c;当需要模拟数以千计的并发用户时&#xff0c;使用单台机器模拟所有的并发用户就有些力不从心&#xff0c;甚至会引起JAVA内存溢出错误。为了让jmeter工具提供更大的负载能力&#xff0c;j…

echarts案例链接

https://blog.csdn.net/luanpeng825485697/article/details/77198858 http://echarts.baidu.com/echarts2/doc/example/mix4.html#infographic

【工具】FTP软件FileZilla下载和连接服务器

作为一名偏后台程序测试的测试工程师&#xff0c;经常会接触运维相关工作&#xff0c;与服务器打交道。 一般公司会搭建内网环境和外网环境&#xff0c;项目开发、SIT测试主要是在内网环境做&#xff0c;然后等到UTA、预投产阶段在外网环境。 如果公司业务量大&#xff0c;多个…