文章目录

  • 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相关推荐

  1. Python测试框架pytest(03)setup和teardown

    Python测试框架pytest系列可以查看下列 Python测试框架pytest(01)简介.安装.快速入门_编程简单学的博客-CSDN博客 ​​​​​​Python测试框架pytest(02)Py ...

  2. Pytest学习笔记(4)-Fixture装置

    文章目录 Fixture装置 前言 fixture用途 fixture优势 fixture语法 fixture定义 fixture调用 fixture作为函数的入参调用 使用 @pytest.mark ...

  3. pytest测试框架系列 - setup和teardown的详细讲解

    简介 前面使用过unittest的都知道,setup和teardown是用来处理用例的前置工作和清理工作,其中还有setupclass和teardownclass是保证执行所以的用例都只执行1次前置和 ...

  4. Pytest学习笔记4——测试步骤

    引言 大家都知道功能测试用例组成的基本要素:用例ID,模块名,测试用例名称,前置条件,测试步骤,预期结果,实际结果等等.前置条件以及测试参数化,前面已经讲过,现在简单讲一下pytest测试步骤的用法. ...

  5. pytest学习笔记

    目录 1.虚拟环境准备 2.安装pytest 3.pytest使用约束 4.执行方式 5.pytest常用运行参数介绍 6.解决大批量执行测试case问题多进程 7.失败重跑机制(以下两种均可) 8. ...

  6. Pytest学习笔记(15)-allure之@allure.epic()、@allure.feature()和@allure.story()

    文章目录 @allure.epic().@allure.feature()和@allure.story() BDD风格的标签 源码 官方代码例子 执行结果 小结一下 拓展:命令行方式 举个

  7. Pytest测试框架中,setup和teardown函数的作用及使用方法

    作为一名Python开发人员,您一定知道Pytest是一个广泛使用的Python测试框架. 它具有易用性和灵活性,可以帮助您快速编写测试用例,并且能够支持包括单元测试.集成测试.功能测试等多种测试类型 ...

  8. 学习笔记之软件测试4:CSDN账号密码登陆自动化测试实现(Selenium+Unitest)

    前言 这一章节用到很多之前的测试知识具体请查看 第一章:什么是软件测试 第二章:基于Python的单元测试方法(Pytest) 第三章:Django项目的登录注册模块的功能测试 CSDN测试案例源码在 ...

  9. 测试学习笔记之--pytest使用和断言处理以及setup,theardown使用

    Pytest Pytest是python的一个测试工具, 可以用于所有类型和级别的软件测试.Pytest是一个可以自动查找到你编写的用例并运行后输出结果的测试框架. Pytest特点 1. 是一个命令 ...

最新文章

  1. .Net 程序员面试 C# 语言篇 (回答Scott Hanselman的问题)
  2. 实战Gradle——第1章 项目自动化介绍
  3. Cisco实物图片库2
  4. linux命令查看几位,Linux每周几个命令(一)--查找篇
  5. Unity 高清渲染管线 ShaderGraph 实现简单的表面水流效果
  6. 如何手动删除并重新安装 .NET Framework 2.0
  7. C语言实现String字符串及其函数
  8. Rational Rose打开mdl文件显示“there are warning,see the log for details”问题解决方法
  9. 双线性映射(密码学常用算法)
  10. java gui 计算器_Java实现GUI计算器(完整版)
  11. 二极管伏安特性曲线_二极管的温度特性
  12. 调整图片大小的方法(变大或变小)
  13. “剑走偏锋”之CAD的正多边形转化成标准圆
  14. 方舟生存进化怎么自建服务器?方舟生存进化自建服务器教程
  15. VC6.0 对话框 的控件工具箱 如何找到
  16. 神威太湖之光之超级计算机,中国研发的“神威·太湖之光”,超级计算机能给我们带来什么?...
  17. MTK芯片资料下载,MT6580处理器参数介绍
  18. 获取星期--蔡勒公式
  19. 好消息:部分银行磁条卡更换芯片卡
  20. CPU卡的一个发卡详细过程

热门文章

  1. java oom-killer_oom-killer
  2. python 二维两点距离_python 各类距离公式实现
  3. 外汇天眼警报:FCA针对ZeemzFX发出警告
  4. JAVA 计算两个日期间的时间间隔
  5. Python经典实例:约瑟夫生者死者小游戏
  6. c51 reentrant 关键字详解
  7. 解决手机连接上wifi可以上网,电脑不上不了网的问题
  8. 360 评估调查:2023 年最佳 360 评估调查问题
  9. SMT的基本知识简介
  10. 毕业设计 2023-2024年最新计算机专业毕设选题题目推荐汇总