一、引言:

1)setup的作用:用来实现执行前的一些初始化操作(如:数据准备、连接设备、打开APP/浏览器、创建日志对象、创建数据库连接、创建接口的请求对象等操作);

2)teardown的作用:用来实现执行用例后的一些操作(如:数据清理、关闭APP/浏览器、销毁日志对象、关闭数据库连接等操作)。

二、分类:

函数级:setup_function/teardown_function    在每个函数形式的用例前/后,都会执行的代码
方法级:setup_method/teardown_method     在类中方法形式的用例前/后,都会执行的代码
类级:setup_class/teardown_class   用于类中,在一个类中只调用一次,类的前/后,都会执行的代码
模块级:setup_module/teardown_module     用于当前模块,当前模块执行前/后,都会执行的代码
用例级:setup/teardown

1)用例级: setup/teardown

在每个用例前/后,都会执行的代码

 ----------与方法级:setup_method/teardown_method,产生的效果一样

import pytestclass TestLogin:def setup(self):print("在每个用例执行前,执行一次")#    def setup_method(self):
#        print("在每个用例执行前,执行一次")def teardown(self):print("在每个用例执行后,执行一次")def test_tangseng(self):print("测试登录成功-唐僧")def test_sunwukong(self):print("测试登录成功-孙悟空")def test_zhubajie(self):print("测试登录成功-猪八戒")def test_shaheshang(self):print("测试登录成功-沙和尚")

2)函数级和方法级:

其实函数和方法的区别,以前我经常分不清楚:

函数长这样:def test_001():

--不带self

--调用的方式:通过“函数名()”的方式进行调用

--分类:可以分为python的内置函数、匿名函数、递归函数、用户自定义函数

方法长这样:def test_001(self): 

--带self

--调用的方式:通过“对象.方法名”的方式进行调用

--分类:普通方法、私有方法、属性方法、特殊方法(双下划线方法:__init__)、类方法、静态方法

--在类中的是方法

如果在类中,用函数级:setup_function/teardown_function,则执行案例时是不会被调用的。

如果在类中,用方法级:setup_method/teardown_method,则执行案例时会被调用。

三、封装

为了避免在每个py文件中,重复编写相同的代码(如setup和teardown进行初始化和结束的处理),让用例中的代码更加整洁清晰,我们可以将这些代码提取出来,放在公共文件夹中(比如:common文件夹)进行封装。

公共的工具包中代码如下:

class CommonUtil:def setup_class(self):print("在每个类执行前,执行一次")def teardown_class(self):print("在每个类执行后,执行一次")def setup(self):print("在每个用例执行前,执行一次")def teardown(self):print("在每个用例执行后,执行一次")

1、新建一个python文件夹:common

2、在该文件夹中,创建py文件:common_util,定义CommonUtil类,如上

3、在待使用的类中,去继承CommonUtil类即可:

import pytest
from common.common_util import CommonUtilclass TestLoginA(CommonUtil):def test_tangseng(self):print("0130类测试登录成功-唐僧")def test_sunwukong(self):print("0130测试登录成功-孙悟空")def test_zhubajie(self):print("0130测试登录成功-猪八戒")def test_shaheshang(self):print("0130测试登录成功-沙和尚")

运行结果图:

思考:

封装之后,每个用例执行前后,都会执行对应的setup和teardown;但实际应用过程中,可能只有部分用例需要用到前后置,应该怎么处理呢?

对应解决方法见:【pytest】之fixture()和conftest使用详解_福多多的福的博客-CSDN博客

【pytest】三、pytest用例管理框架的前后置(固件、夹具)setup和teardown,及封装相关推荐

  1. 接口自动化测试之pytest用例管理框架

    一.pytest用例管理框架 文档:https://docs.pytest.org/en/latest/contents.html#toc 第三方库:https://pypi.org/search/? ...

  2. Pytest之收集用例及命令行参数

    VOL 146 28 2020-07 今天距2021年156天 这是ITester软件测试小栈第146次推文 点击上方蓝字"ITester软件测试小栈"关注我,每周一.三.五早上  ...

  3. Pytest如何查找用例耗时最长的N个

    [原文链接]Pytest如何查找用例耗时最长的N个 当存在大量测试脚本的时候,脚本的运行耗时就会变得很长,难免需要对脚本的运行时间进行分析,而要想提高自动化脚本的运行效率,最直接最有效的就是不断的去找 ...

  4. 接口自动化测试框架开发 | Pytest+Allure+AIOHTTP+用例自动生成

    测试开发实战技能进阶学习,文末加群! 近期准备优先做接口测试的覆盖,为此需要开发一个测试框架,经过思考,这次依然想做点儿不一样的东西. 接口测试是比较讲究效率的,测试人员会希望很快能得到结果反馈,然而 ...

  5. python:pytest中的setup和teardown

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

  6. Pytest自动化脚本中各个层级的setup和teardown的执行流程和使用方法

    [原文链接]Pytest自动化脚本中各个层级的setup和teardown的执行流程和使用方法 文章目录 一.自动化脚本组成简介 二.测试类中的各个层级的setup和teardown 三.测试文件中各 ...

  7. Pytest测试用例之setup与teardown方法(一)

    学过unittest框架的大家都知道里面 [前置/后置setup/teardown ]非常好,用来写一些每个case执行前都需要执行的公用代码 [ 作用:在每次用例开始前和结束后都去执行一次 例如我们 ...

  8. 什么是Pytest及Pytest常用方法

    什么是Pytest? 一.什么是pytest 二.Pytest的特点 三.Pytest以及常用插件安装 四.编写规则 五.Pytest之收集用例及命令行参数 1.用例收集规则 2.命令行参数 六.跳过 ...

  9. 【pytest】pytest的Hook函数详解

    文章目录 Hook函数的定义 pytest的Hook函数,修改pytest-html报告 装饰器pytest.hookimpl(hookwrapper=True) Hook函数排序/调用示例 Hook ...

最新文章

  1. 微服务架构与Docker容器之间关系
  2. 进一步掌握linux吧
  3. 自考总结--2020年10月份
  4. 入门Web前端要注意什么?要学哪些软件?
  5. Zookeeper的功能以及工作原理 (转自:http://www.cnblogs.com/felixzh/p/5869212.html)
  6. Android开发一 什么是3G
  7. ASP.NET Core 源码学习之 Options[1]:Configure
  8. 前端学习(740):函数返回值注意事项
  9. java 随机 数字 字母组合_java生成随机数字和字母组合
  10. leetcode 429 层序遍历n叉树(C语言)
  11. 用户收货地址h5页面_如何实现H5可视化编辑器的实时预览和真机扫码预览功能...
  12. Java知识系统回顾整理01基础04操作符02关系操作符
  13. 通过wget在Linux上下载Java JDK会显示在许可证页面上
  14. 微信小程序用RSA加密和java后台对接。
  15. 此刻心情--我为什么不找女朋友
  16. Asp.net直接保存文件到客户端
  17. 管理感悟:如何看待培训
  18. (一)从零开始学习模糊控制——基本概念
  19. 【测试基础】Linux打包、解包、解压缩命令这一篇全
  20. 2022深圳杯C题思路解析

热门文章

  1. 阿里云服务器ECS接入多IP_ECS绑定多个弹性公网IP搭建教程
  2. 屏蔽百度搜索结果页的推送广告
  3. 信用卡不激活到底会怎样?会有哪些负面影响呢?
  4. adblock 屏蔽网站广告 免费
  5. Deployer-6-部署流-Flow
  6. 前端---div 显示与隐藏
  7. python 实现图片批量加入水印!
  8. 招聘简历管理系统的简单设计
  9. [work] 一阶 二阶马尔可夫
  10. 美女为什么美?????