| |
|
开发:
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的作用范围(scope)?fixture里面有个scope参数可以控制fixture的作用范围:session>module>class>function -function:每个函数或方法都会调用 -class:每一个类调用一次,一个类中可以有多个方法 -module:每一个.py文件调用一次,该文件内又有多个function和class -session:是多个文件调用一次,可以跨.py文件调用,每个.py就是module 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 例子理解: scope="function" @pytest.fixture()如果不写参数,参数就是scope=function,他的作用范围就是每个测试用例来之前运行一次,销毁代码在测试用例之后运行 例子: import pytest @pytest.fixture() def test1(): a = 'leo' print('\n传出a') return a @pytest.fixture(scope='function') def test2(): b = '男' print('\n传出b') return b def test3(test1): name = 'leo' print('找到name') assert test1 == name def test4(test2): sex = '男' print('找到sex') assert test2 == sex if __name__ == '__main__': pytest.main('-q test_fixture.py') ?例子二:放在类中 import pytest @pytest.fixture() def test1(): a = 'leo' print('\n传出a') return a @pytest.fixture(scope='function') def test2(): b = '男' print('\n传出b') return b class TestCase: def test3(self, test1): name = 'leo' print('找到name') assert test1 == name def test4(self, test2): sex = '男' print('找到sex') assert test2 == sex def test5(self, test1): sex = '男' print('找到hyy') assert test1 == sex if __name__ == '__main__': pytest.main(['-s', 'test_fixture.py']) ? ?scope="class" fixture为class级别的时候,如果一个class里面有多个用例,都调用了fixture,那么此fixture 只在此class里所有用例开始前执行一次 import pytest @pytest.fixture(scope='class') def test1(): b = '男' print('传出了%s, 且只在class里所有用例开始前执行一次!!!' % b) return b class TestCase: def test3(self, test1): name = '男' print('找到name') assert test1 == name def test4(self, test1): sex = '男' print('找到sex') assert test1 == sex class TestCase1: def test5(self, test1): name = '男' print('找到name') assert test1 == name def test6(self, test1): sex = '男' print('找到sex') assert test1 == sex if __name__ == '__main__': pytest.main(['-s', 'test_fixture.py']) ? scope="module" fixture为module时,在当前的.py脚本里面所有用例之前只执行一次 import pytest ##test_fixture.py @pytest.fixture(scope='module') def test1(): b = '男' print('传出了%s, 且在当前py文件下执行一次!!!' % b) return b def test3(test1): name = '男' print('找到name') assert test1 == name class TestCase: def test4(self, test1): sex = '男' print('找到sex') assert test1 == sex class TestCase1: def test5(self, test1): sex = '男' print('找到sex') assert test1 == sex if __name__ == '__main__': pytest.main(['-s', 'test_fixture.py']) ? scope="session" fixture为session级别是可以跨.py模块调用的,也就是当我们有多个.py文件时,如果多个用例调用fixture,该方法也只是执行一次,那就可以设置scope='session',并且写到contest.py文件里 import pytest # conftest.py @pytest.fixture(scope='session') def test1(): sex = '男' print('获取到%s' % sex) return sex import pytest # py_fixture.py class TestCase: def test4(self, test1): sex = '男' print('找到sex') assert test1 == sex class TestCase1: def test5(self, test1): sex = '男' print('找到sex') assert test1 == sex if __name__ == '__main__': pytest.main(['-s', 'test_fixture.py']) import pytest # py_fixture1.py class TestCase: def test5(self, test1): sex = '男' print('找到sex') assert test1 == sex if __name__ == '__main__': pytest.main(['-s', 'test_fixture1.py']) 同时执行两个py文件,可以在命令行输入? pytest -s py_fixture.py? py_fixture1.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:26:33- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |