Pytest学习笔记(3)-Setup和Teardown
文章目录
- setup和teardown
- 前言
- module(模块)级别
- function(函数)级别
- class(类)级别
- method(方法)级别
- 混合使用
- 总结
setup和teardown
前言
在做自动化的时候,常常有这样的诉求:
- 用例执行前,需要重新启动一次浏览器
- 用例执行结束时,需要清除测试数据
在unittest中,我们可以使用 setUp() 和 tearDown() 两个方法来实现以上需求,其中 setUp() 方法用于初始化测试固件;而 tearDown() 方法用于销毁测试固件。程序会在运行每个测试用例(以 test_ 开头的方法)之前自动执行 setUp() 方法来初始化测试固件,井在每个测试用例(以 test_ 开头的方法)运行完成之后自动执行 tearDown() 方法来销毁测试固件。
那么如何实现只启动一次浏览器,所有测试用例执行结束后再清除数据这样的需求呢?
- unittest提供了setUpClass()和tearDownClass()两个方法,配合@classmethod装饰器使用即可
作为比unittest更强大的框架,pytest自然也有类似的方法
pytest的setup/teardown方法包括:
- 模块级别(setup_module/teardown_module)
- 函数级别(setup_function/teardown_function)
- 类级别(setup_class/ teardown_class)
- 方法级别(setup_method/teardown_methond或者setup/teardown)
module(模块)级别
模块中的第一个用例开始前执行一次setup_module方法,模块中的最后一个测试用例结束后执行一次teardown_module方法
import pytestdef setup_module():print("执行setup_module")def teardown_module():print("执行teardown_module")class TestDemo(object):def test_case1(self):print("执行测试用例1")assert 1 + 1 == 2def test_case2(self):print("执行测试用例2")assert 1 + 3 == 4def test_case3(self):print("执行测试用例3")assert 1 + 5 == 6
运行结果如下:
function(函数)级别
在每个测试函数前运行一次setup_function方法,在每个测试函数结束后运行一次teardown_function方法,只对函数用例生效,不在类中
import pytestdef setup_function():print("执行setup_function")def teardown_function():print("执行teardown_function")def test_case1():print("执行测试用例1")assert 1 + 1 == 2def test_case2():print("执行测试用例2")assert 1 + 3 == 4def test_case3():print("执行测试用例3")assert 1 + 5 == 6
运行结果如下:
class(类)级别
setup_class/teardown_class 对类有效,位于类中,在执行测试类之前和之后各调用一次
import pytestclass TestDemo(object):def setup_class(self):print("执行setup_class")def teardown_class(self):print("执行teardown_class")def test_case1(self):print("执行测试用例1")assert 1 + 1 == 2def test_case2(self):print("执行测试用例2")assert 1 + 3 == 4def test_case3(self):print("执行测试用例3")assert 1 + 5 == 6
运行结果如下:
method(方法)级别
setup_method/teardown_method和setup/teardown,在测试类中每个测试方法前后调用一次。这两个方法效果是一样的
import pytestclass TestDemo(object):def setup_method(self):print("执行setup_method")def teardown_method(self):print("执行teardown_method")def test_case1(self):print("执行测试用例1")assert 1 + 1 == 2def test_case2(self):print("执行测试用例2")assert 1 + 3 == 4def test_case3(self):print("执行测试用3")assert 1 + 5 == 6
运行结果如下:
混合使用
import pytestdef setup_module():print("模块开始时,执行setup_module")def teardown_module():print("模块结束时,执行teardown_module")def setup_function():print("函数用例开始时,执行setup_function")def teardown_function():print("函数用例结束时,执行teardown_function")def test_a():print("执行测试函数a")def test_b():print("执行测试函数b")class TestDemo(object):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_case1(self):print("执行测试用例1")assert 1 + 1 == 2def test_case2(self):print("执行测试用例2")assert 1 + 3 == 4def test_case3(self):print("执行测试用例3")assert 1 + 5 == 6
运行结果如下:
总结
- 模块级(setup_module/teardown_module)开始于模块始末,全局的
- 函数级(setup_function/teardown_function)只对函数用例生效(不在类中)
- 类级(setup_class/teardown_class)只在类中前后运行一次(在类中)
- 方法级(setup_method/teardown_method或setup/teardown)开始于方法始末(在类中)
Pytest学习笔记(3)-Setup和Teardown相关推荐
- Python测试框架pytest(03)setup和teardown
Python测试框架pytest系列可以查看下列 Python测试框架pytest(01)简介.安装.快速入门_编程简单学的博客-CSDN博客 Python测试框架pytest(02)Py ...
- Pytest学习笔记(4)-Fixture装置
文章目录 Fixture装置 前言 fixture用途 fixture优势 fixture语法 fixture定义 fixture调用 fixture作为函数的入参调用 使用 @pytest.mark ...
- pytest测试框架系列 - setup和teardown的详细讲解
简介 前面使用过unittest的都知道,setup和teardown是用来处理用例的前置工作和清理工作,其中还有setupclass和teardownclass是保证执行所以的用例都只执行1次前置和 ...
- Pytest学习笔记4——测试步骤
引言 大家都知道功能测试用例组成的基本要素:用例ID,模块名,测试用例名称,前置条件,测试步骤,预期结果,实际结果等等.前置条件以及测试参数化,前面已经讲过,现在简单讲一下pytest测试步骤的用法. ...
- pytest学习笔记
目录 1.虚拟环境准备 2.安装pytest 3.pytest使用约束 4.执行方式 5.pytest常用运行参数介绍 6.解决大批量执行测试case问题多进程 7.失败重跑机制(以下两种均可) 8. ...
- Pytest学习笔记(15)-allure之@allure.epic()、@allure.feature()和@allure.story()
文章目录 @allure.epic().@allure.feature()和@allure.story() BDD风格的标签 源码 官方代码例子 执行结果 小结一下 拓展:命令行方式 举个
- Pytest测试框架中,setup和teardown函数的作用及使用方法
作为一名Python开发人员,您一定知道Pytest是一个广泛使用的Python测试框架. 它具有易用性和灵活性,可以帮助您快速编写测试用例,并且能够支持包括单元测试.集成测试.功能测试等多种测试类型 ...
- 学习笔记之软件测试4:CSDN账号密码登陆自动化测试实现(Selenium+Unitest)
前言 这一章节用到很多之前的测试知识具体请查看 第一章:什么是软件测试 第二章:基于Python的单元测试方法(Pytest) 第三章:Django项目的登录注册模块的功能测试 CSDN测试案例源码在 ...
- 测试学习笔记之--pytest使用和断言处理以及setup,theardown使用
Pytest Pytest是python的一个测试工具, 可以用于所有类型和级别的软件测试.Pytest是一个可以自动查找到你编写的用例并运行后输出结果的测试框架. Pytest特点 1. 是一个命令 ...
最新文章
- .Net 程序员面试 C# 语言篇 (回答Scott Hanselman的问题)
- 实战Gradle——第1章 项目自动化介绍
- Cisco实物图片库2
- linux命令查看几位,Linux每周几个命令(一)--查找篇
- Unity 高清渲染管线 ShaderGraph 实现简单的表面水流效果
- 如何手动删除并重新安装 .NET Framework 2.0
- C语言实现String字符串及其函数
- Rational Rose打开mdl文件显示“there are warning,see the log for details”问题解决方法
- 双线性映射(密码学常用算法)
- java gui 计算器_Java实现GUI计算器(完整版)
- 二极管伏安特性曲线_二极管的温度特性
- 调整图片大小的方法(变大或变小)
- “剑走偏锋”之CAD的正多边形转化成标准圆
- 方舟生存进化怎么自建服务器?方舟生存进化自建服务器教程
- VC6.0 对话框 的控件工具箱 如何找到
- 神威太湖之光之超级计算机,中国研发的“神威·太湖之光”,超级计算机能给我们带来什么?...
- MTK芯片资料下载,MT6580处理器参数介绍
- 获取星期--蔡勒公式
- 好消息:部分银行磁条卡更换芯片卡
- CPU卡的一个发卡详细过程