IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发测试 -> 自动化测试学习Day4-@pytest.fixture()入门及应用 -> 正文阅读

[开发测试]自动化测试学习Day4-@pytest.fixture()入门及应用

一、fixture简介

? ? ? ? fixture用来完成那些需要多次重复执行的用例,比如需要先退出,再更换其他用户登录。我们可以把用于退出和登录的用例的函数比如叫做A函数,在A函数的前面加上@pytest.fixture()装饰器,这样,这个A函数就可以被其他函数直接调用了,只要其他用例函数在执行前需要有先进行退出再更换其他用户登录的操作,都可以直接调A函数。类似unittest中setup/teardown这种前后置。

fixture可以通过设置 scope 参数来控制其作用域。fixture提供四种作用范围: function、class、module、session,session>module>class>function。

函数function:每个方法(函数)都会执行一次;
类class:每个类都会执行一次。类中有多个方法调用,都可以共享这个 fixture。(看到有说只在第一个方法调用时执行?需研究,标记一下)
模块module:一个 .py 文件执行一次。一个.py 文件可能包含多个class和function;
会话package/session:多个文件调用一次,可以跨 .py 文件。一次 pytest 会话中的所有测试函数、方法都可以共享这个 fixture

@pytest.fixture()如果不写参数,参数就是scope="function",它的作用范围是每个测试用例来之前运行一次,销毁代码在测试用例之后运行。

二、fixture用途:
1.测试前后的初始化设置,如测试数据准备,链接数据库,打开浏览器等这些操作都可以使用fixture来实现
2.测试用例的前置条件可以使用fixture实现
3.支持经典的xunit fixture ,像unittest使用的setup和teardown
4.fixture可以实现unittest不能实现的功能,比如unittest中的测试用例和测试用例之间是无法传递参数和数据的,但是fixture却可以解决这个问题

三、fixture实践

先需要下载fixture包
将需要引用的函数在def之前加个装饰器@pytest.fixture(),可以将这整个视为函数,注意fixture下命名不要用test_开头,跟用例区分开。用例才是test_开头的命名。

1.@pytest.fixture(),每个调用fixture的函数都会执行一次

输入:

import pytest
@pytest.fixture()
def func():
    x=4
    print("我是fixture函数,快来引用~~")
    return x + 1  #fixture函数

def test_oss(func):
    print('我不是类,结果为:%d'%(func))
class Test_001:
    def test_answer(self,func):   #引用fiture函数
        print('引用fixture函数成功,结果为:%d'%(func))
        assert func == 5
    def test1(self,func):
        print('test_2引用fixture函数成功,结果为:%d'%(func))
    def test_haha(self):
     print('我是测试用例haha')
if __name__=='__main__':
    pytest.main(['-v','-s','test_study.py'])

运行结果:

2.@pytest.fixture(scope='class'),测试类内的每一个测试方法都调用了fixture,fixture只在该class下所有测试用例执行前执行一次

将以上代码@pytest.fixture()更换成@pytest.fixture(scope='class')

运行结果:

  开发测试 最新文章
pytest系列——allure之生成测试报告(Wind
某大厂软件测试岗一面笔试题+二面问答题面试
iperf 学习笔记
关于Python中使用selenium八大定位方法
【软件测试】为什么提升不了?8年测试总结再
软件测试复习
PHP笔记-Smarty模板引擎的使用
C++Test使用入门
【Java】单元测试
Net core 3.x 获取客户端地址
上一篇文章      下一篇文章      查看所有文章
加:2021-08-19 12:21:43  更:2021-08-19 12:22:19 
 
开发: 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:43:16-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码