| |
|
|
开发:
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图书馆 购物 三丰科技 阅读网 日历 万年历 2026年1日历 | -2026/1/9 1:38:02- |
|
| 网站联系: qq:121756557 email:121756557@qq.com IT数码 |