| |
|
开发:
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的使用 |
目录 ?2、使用装饰器@pytest.mark.usefixtures()修饰需要运行的用例 用例设计原则1、文件名以test_*.py文件和*_test.py 2、以test_开头的函数 3、以Test开头的类 4、以test_开头的方法 fixture优势firture相对于setup和teardown来说应该有以下几点优势
fixture的作用范围fixture里面有个scope参数可以控制fixture的作用范围:session>module>class>function function:每一个函数或方法都会调用 class:每一个类调用一次,一个类中可以有多个方法 module:每一个.py文件调用一次,该文件内又有多个function和class session:是多个文件调用一次,可以跨.py文件调用,每个.py文件就是module fixture源码详解可以使用装饰器(带或不带参数)来定义fixture功能。 fixture功能的名称可以在以后使用引用它会在运行测试之前调用它:test模块或类可以使用pytest.mark.usefixtures(fixturename)标记。 测试功能可以直接使用fixture名称作为输入参数,在这种情况下,夹具实例从fixture返回功能将被注入。 fixture(scope='function',params=None,autouse=False,ids=None,name=None): scope:有四个级别参数"function"(默认),"class","module","session" params:一个可选的参数列表,它将导致多个参数调用fixture功能和所有测试使用它。 autouse:如果True,则为所有测试激活fixture func可以看到它。如果为False则显示需要参考来激活fixture ids:每个字符串id的列表,每个字符串对应于params这样他们就是测试ID的一部分。如果没有提供ID它们将从params自动生成 name:fixture的名称。这默认为装饰函数的名称。如果fixture在定义它的统一模块中使用,夹具的功能名称将被请求夹具的功能arg遮蔽,解决这个问题的一种方法时将装饰函数命令"fixture_<fixturename>"然后使用"@pytest.fixture(name='<fixturename>')"。 scope四个参数的范围scope="function"@pytest.fixture()如果不写参数,参数就是scope="function",它的作用范围是每个测试用例来之前运行一次,销毁代码在测试用例之后运行。 示例1:
运行结果: ?scope="class"fixture为class级别的时候,如果一个class里面有多个用例,都调用了次fixture,那么此fixture只在此class里所有用例开始前执行一次。 示例2:
运行结果: ?scope="module"fixture为module时,在当前.py脚本里面所有用例开始前只执行一次。 示例3:
运行结果: scope="session"?fixture为session级别是可以跨.py模块调用的,也就是当我们有多个.py文件的用例的时候,如果多个用例只需调用一次fixture,那就可以设置为scope="session",并且写到conftest.py文件里。 示例4: conftest.py文件名称时固定的,pytest会自动识别该文件。放到项目的根目录下就可以全局调用了,如果放到某个package下,那就在改package内有效。 文件目录为: conftest.py文件:
新建test_04.py文件:
新建test_05.py文件:
需要同时执行两个py文件,?可以在cmd环境下在文件py文件所在目录下执行命令:pytest -s test_04.py test_05.py? 运行结果: 示例5: 如果我想实现以下场景: 新建一个文件test_fixture.py:
运行结果: conftest.py1、配置1.上面一个案例是在同一个.py文件中,多个用例调用一个登陆功能,如果有多个.py的文件都需要调用这个登陆功能的话,那就不能把登陆写到用例里面去了。 conftest.py配置需要注意以下点:
2、作用范围一个工程下可以建多个conftest.py的文件,一般在工程根目录下设置的conftest文件起到全局作用。在不同子目录下也可以放conftest.py的文件,作用范围只能在改层级以及以下目录生效。
调用fixture的三种方法1、函数或类里面方法直接传fixture的函数参数名称新建test_06.py文件:
运行结果: 2、使用装饰器@pytest.mark.usefixtures()修饰需要运行的用例新建test_07.py文件:
运行结果: 3、叠加usefixtures如果一个方法或者一个class用例想要同时调用多个fixture,可以使用@pytest.mark.usefixture()进行叠加。注意叠加顺序,先执行的放底层,后执行的放上层。
运行结果: usefixtures与传fixture区别?如果fixture有返回值,那么usefixture就无法获取到返回值,这个是装饰器usefixture与用例直接传fixture参数的区别。 当fixture需要用到return出来的参数时,只能讲参数名称直接当参数传入,不需要用到return出来的参数时,两种方式都可以。 fixture自动使用autouse=True当用例很多的时候,每次都传这个参数,会很麻烦。fixture里面有个参数autouse,默认是False没开启的,可以设置为True开启自动使用fixture功能,这样用例就不用每次都去传参了 autouse设置为True,自动调用fixture功能 新建test_09.py文件:
运行结果: |
|
开发测试 最新文章 |
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:46:59- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |