Python自动化测试框架之Pytest相关用法-Fixture(2)
1、setup和teardown
和unittest一样,pytest也有自己的前置后置条件:setup、teardown。但不同的是,pytest的类型比较多,多达10种,根据不同的生效范围分别为以下级别类型
模块级别:setup_module、teardown_module
函数级别:setup_function、teardown_function,不在类中的方法
类级别:setup_class、teardown_class
方法级别:setup_method、teardown_method
方法细化级别:setup、teardown
首先来看类级别以下的前置后置条件的使用
class Test_Case: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 setup(self):print('-----setup')def teardown(self):print('-----teardown')def test_case1(self):print('这是---用例1')def test_case2(self):print('这是---用例2')if __name__ == '__main__':pytest.main(['./test_demo1.py', '-s'])
输出:
可以看到,先后顺序是类级别>方法级别>方法细化级别。但是这三个级别的方法都是在同一个类中生效的。剩余的模块级别则是全局的,在模块运行前后执行。而函数级别则是将不在类中的方法前后执行。
为了更方便理解,融入场景说明各个条件的作用
不过相比之下,除了类级别、方法级别的条件使用较频繁外,其他并不经常使用。此外,比使用更频繁的是pytest的"外壳函数"-fixture,能够对某条用例单独设置前后置条件。
2、fixture
Fixture是pytest的核心功能,也是亮点功能,是一个装饰器函数,是用于将测试前后进行预备、清理工作的代码分离出核心测试逻辑的一种机制。作为pytest的 “外壳函数”,他可以当作参数传入,也可以返回值,而fixture机制的存在,也是pytest比unittest灵活的原因之一。
1、基本用法
在方法头前添加"@pytest.fixture(参数)",那么该方法就是个fixture函数了。而且fixture还可以配合“yield”完成后置条件的操作。
而调用fixture函数也有三种方法
1、用例前添加装饰器:@pytest.mark.usefixtures("fixture函数名")
2、fixture作为参数传入用例中
3、fixture使用autouse参数
@pytest.fixture()
def work():print('fixture:开始')yield 4print('fixture:结束')class Test_Case:def test_case1(self, work):print('fixture的返回值为:', work)print('这是---用例1')def test_case2(self):print('这是---用例2')if __name__ == '__main__':pytest.main(['./test_demo1.py', '-s'])
输出:
2、参数
此外,还可以添加scope、autouse等参数,用来表示fixture的作用域等,scope参数代表fixture的作用域,有4个作用范围:function、class、module、session
function:每个函数或方法都会调用(未填写默认为function级别)
class:每个类只调用1次
module:每个模块只调用1次
session:多个模块调用1次,通常写在conftest中
autouse参数表示在scope作用域中的用例无需填写fixture参数,默认为自动调用
3、其他
此外,fixture还支持相互调用,例如first作为scond的“前置条件”
@pytest.fixture()
def first():print('这是第一层fixture')@pytest.fixture()
def second(first):print('这是第二层fixture')class Test_Case:def test_case1(self, second):print('这是---用例1')if __name__ == '__main__':pytest.main(['./test_demo1.py', '-s'])
输出:
3、conftest.py
说简单点,其实就是fixture函数的集中管理,如果所有用例的前置条件都一样,那在每个用例文件中都创建fixture就很不方便,所以就要用到conftest.py的全局作用,conftest.py有以下特点:
1、与pytest.ini一样,文件名、文件类型固定。可以创建多个不同目录的conftest.py
2、pytest会默认读取conftest.py中的fixture函数
3、用例文件无需导入conftest.py,直接调用fixture即可
4、conftest.py只对同一目录下的所有用例生效
例如以下文件结构
最外层的conftest会对test_case和test_case2文件夹下的所有用例生效,一般用来生成driver、关闭浏览器、生成测试报告等配置,而test_case和test_case2中的conftest就针对不同需求配置不同fixture函数了。
Python自动化测试框架之Pytest相关用法-Fixture(2)相关推荐
- Python自动化测试框架之Pytest相关用法-基本使用(1)
前期准备 需要准备:pytest库 执行命令:pip install pytest.由于已经安装好了,所以执行情况会如下图所示 安装完成后,如果能够导入说明安装成功可以使用了 Pytest相关 1.基 ...
- Python自动化测试框架之Pytest教程【让你小鸡变老鹰】
Pytest pytest是一个非常成熟的全功能的Python测试框架,主要有以下几个特点: · 简单灵活,容易上手 · 支持参数化 · 能够支持简单的单元测试和复杂的功能测试,还可以用来做sele ...
- python自动化测试框架pytest.pdf_Python自动化测试框架
随着技术的进步和自动化技术的出现,市面上出现了一些自动化测试框架.只需要进行一些适用性和效率参数的调整,这些自动化测试框架就能够开箱即用,大大节省了开发时间.而且由于这些框架被广泛使用,他们具有很好的 ...
- 7个实用的Python自动化测试框架
目录 前言 1.Unittest 2. Doctest 3.pytest 4.Nose 5.tox 6.Unittest2 7.mock unittest. 结语 前言 随着技术的进步和自动化技术的出 ...
- Python自动化测试框架【Allure-pytest功能特性介绍】
Python自动化测试框架[Allure-pytest功能特性介绍] 目录:导读 前言 生成报告 测试代码 目录结构 Allure特性 Environment Categories Fixtures ...
- Python单元测试框架之pytest 3 -- fixtures
From: https://www.cnblogs.com/fnng/p/4769020.html Python单元测试框架之pytest -- fixtures 2015-08-29 13:05 b ...
- Python自动化测试框架有哪些?
令开发者万分高兴的是,开发自己的测试框架的日子终于结束了.以前,开发团队接手一个项目并开始开发时,除了项目模块的实际开发之外,他们不得不为这个项目构建一个自动化测试框架.一个测试框架应该具有最佳的测试 ...
- Python学习教程:Python自动化测试框架需要学习哪些?
需要掌握学习Python自动化测试框架有哪些?常用的Python自动化测试框架有Robot Framework.Pytest.UnitTest/PyUnit.Behave.Lettuce.软件测试的自 ...
- Python自动化测试框架有哪些?怎么选
目录 自动化测试框架概念 自动化测试框架根据思想理念和深度不同,渐进式的分为以下几种: 模块化测试脚本框架: 测试库框架: 数据驱动测试框架: 关键字驱动或表驱动的测试框架: 混合测试自动化框架: 框 ...
最新文章
- Activity的使用(四):两个activity的交互
- 人工智能与电气工程及其自动技术论述
- 2019年中国十大人才发展趋势
- 大数据工作流_大数据和人工智能时代下的数字化工作流
- 面向区块链的高效物化视图维护和可信查询
- flutter和webapp_Flutter 适配移动端和web不同尺寸
- java线程交替执行_Java synchronized线程交替运行实现过程详解
- 二十四 Redis消息订阅事务持久化
- 窥探Swift之新添数据类型元组与可选值
- 微信小程序云开发教程-后端接口分析和接口返回值的格式定义
- Windows11 开发版bt磁力链种子及其他下载地址整理
- stm32晶振匹配电容_晶振的匹配电容选择
- 国税局验证码识别 | 不讲武德篇
- distinct 和order by 冲突解决方案
- 今天小暑是什么时间_2020年小暑具体时间是几点几分?小暑是什么意思?
- 学习英文-学以致用【场景:程序员英文-开发环境】
- 发表Nature等杂志四十多篇论文老师带您学单细胞测序数据挖掘和课题设计 2020年1月11-12日 上海...
- 原创|实时数仓实战项目-第三节(数仓治理)
- 京东炸年兽脚本--亲测有效 2021最新版
- 取消研究生论文发表需求,985大学官宣!