| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 开发测试 -> pytest之fixture -> 正文阅读 |
|
[开发测试]pytest之fixture |
fixture在pytest中是用来实现setup和teardown的方法,是在测试用例执行前后执行的函数,当有需要在测试用例执行前或执行后执行某些动作的场景时使用fixture来处理 一、fixture的调用方式: fixture有三种调用方式 1、函数或类直接将fixture的函数名作为参数传入,调用多个用逗号隔开
运行结果: 2、使用装饰器@pytest.mark.usefixture()修饰 调用多个时,可以只修饰一次,用逗号分割fixture函数名
运行结果: ? 也可以修饰多个,需要注意的是执行顺序是从下往上,有执行顺序要求时想先执行的要往下写
运行结果: 3、@pytest.fixture(autouse=True)自动调用,范围跟着scope走
运行结果: ?可以看到函数、类都没有实际调用fixture,是自动调用的,作用范围是fixture设置的scope范围 4、使用装饰器@pytest.mark.parametrize(argnames=fixture函数名,indirect=True)
运行结果: 这种调用方式是当你需要用fixture处理一些数据并返回一个返回值时使用,如果只是单纯的调用不推荐用这种方式 二、fixture参数介绍: 1、scope fixture的作用域,fixture有四个作用域分别为session(会话级)、module(模块级)、class(类级)、function(函数级),作用域都是从开始引用fixture的位置开始 接下来从低到高依次说明: 代码先放在这里:
1-1、function: 引用了fixture的函数都会执行一次fixture 范围是function,看到每个函数都执行了一次fixture 1-2、class 引用了fixture的类,在整个类只执行一次
?每个class执行了一次 1-3、module 引用了fixture的模块,在整个模块只执行一次
?一个文件只执行了一次 1-4、session 引用了fixture的会话,是指当前运行的整个项目,只执行一次 2、ids 用例标识ID,与params配合使用,一一对应 3、params 此参数是fixture的可选形参,支持传入列表,默认为None 每个params值fixture都会调用一次,类似for循环,与@pytest.mark.parametrize()的argvalues用法一致 可与ids一起使用,类似@pytest.mark.parametrize()的argvalues和argnames的关系 params在fixture中的使用要用pytest自带的request来调用:request.param
运行结果: 4、name fixture的重命名,若使用name重命名后,则调用fixture必须使用新的命名,否则报错
运行结果:
运行结果: 5、autouse 默认为False,若设置为True,则以scope的作用域为执行单位,自动调用fixture 具体前面有说明,这里不再复述 三、在fixture中前置后置方法用yield关键字区分 1、写在yield前面的程序为前置方法,前置会在执行测试用例之前执行,只实现前置时可省略yield
运行结果: 2、写在yield后面的程序为后置方法,后置会在测试用例执行结束后执行
运行结果: 3、若有返回值,若需实现后置则必需有yield关键字,否则yield或return都可以 yield返回:
运行结果: ?return返回:
运行结果: 四、conftest.py 这个文件是pytest的配置文件,不需要import导入,pytest会自动识别,可以创建在根目录,也可以创建在用例目录下,建在哪个目录下它的作用范围就是哪个目录,需要注意conftest.py一定要与需要调用它的用例文件在同级或上级目录下,否则在下级或与用例所在目录同级的其他目录下是不生效的 该文件主要存放fixture,统一管理前置后置条件 目录层级:
conftest.py
test_index.py
运行结果: fixture函数命名建议不要test_开头,与测试用例区分开 五、pytest搜索fixture的顺序 1、优先搜索测试函数所在模块 2、然后搜索模块所在目录下的conftest.py 3、找不到在继续逐层向上层搜索conftest.py 这里顺便提一下笔者在刚接触pytest的fixture时曾遇到一个坑,那个时候是从unittest换到pytest,当时因为知道pytest与unittest可以兼容,所以就没有去掉unittest的代码,而是在其基础上使用pytest,后来在用到fixture的时候就发现fixture不能正确使用,只有写在同一个文件下才可以调用fixture,而且怎么都拿不到fixture的返回值,fixture的大部分实现都做不到,后来查阅资料发现是因为当中混杂了unittest导致的,后来把unittest全部去掉就可以正常使用fixture了 |
|
开发测试 最新文章 |
pytest系列——allure之生成测试报告(Wind |
某大厂软件测试岗一面笔试题+二面问答题面试 |
iperf 学习笔记 |
关于Python中使用selenium八大定位方法 |
【软件测试】为什么提升不了?8年测试总结再 |
软件测试复习 |
PHP笔记-Smarty模板引擎的使用 |
C++Test使用入门 |
【Java】单元测试 |
Net core 3.x 获取客户端地址 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/17 20:44:38- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |