前言

fixture是pytest的核心功能,也是亮点功能,熟练掌握fixture的使用方法,pytest用起来才会得心应手!

fixture简介

fixture的目的是提供一个固定基线,在该基线上测试可以可靠地和重复地执行。fixture提供了区别于传统单元测试(setup/teardown)有显著改进:

  • 有独立的命名,并通过声明它们从测试函数、模块、类或整个项目中的使用来激活。
  • 按模块化的方式实现,每个fixture都可以互相调用。
  • fixture的范围从简单的单元扩展到复杂的功能测试,允许根据配置和组件选项对fixture和测试用例进行参数化,或者跨函数 function、类class、模块module或整个测试会话sessio范围。

fixture作为参数传入

定义fixture跟定义普通函数差不多,唯一区别就是在函数上加个装饰器@pytest.fixture(),fixture命名不要用test_开头,跟用例区分开。用例才是test_开头的命名。

fixture是可以有返回值的,如果没return默认返回None。用例调用fixture的返回值,直接就是把fixture的函数名称当成变量名称,如下案例

# test_fixture1.py
import pytest@pytest.fixture()
def user():print("获取用户名")a = "yoyo"return adef test_1(user):assert user == "yoyo"if __name__ == "__main__":pytest.main(["-s", "test_fixture1.py"])

运行结果

============================= test session starts =============================
platform win32 -- Python 3.6.0, pytest-3.6.3, py-1.5.4, pluggy-0.6.0
rootdir: D:\YOYO\fixt, inifile:
plugins: rerunfailures-4.1, metadata-1.7.0, html-1.19.0, allure-adaptor-1.7.10
collected 1 itemtest_fixture1.py 获取用户名
.========================== 1 passed in 0.20 seconds ===========================

error和failed区别

测试结果一般有三种:passed、failed、error。(skip的用例除外)

如果在test_用例里面断言失败,那就是failed

# test_fixture2.py
import pytest@pytest.fixture()
def user():print("获取用户名")a = "yoyo"return adef test_1(user):assert user == "yoyo111"  # 用例失败就是failedif __name__ == "__main__":pytest.main(["-s", "test_fixture2.py"])

如果在fixture里面断言失败了,那就是error

test_fixture3.py
import pytest@pytest.fixture()
def user():print("获取用户名")a = "yoyo"assert a == "yoyo123"  # fixture失败就是errorreturn adef test_1(user):assert user == "yoyo"if __name__ == "__main__":pytest.main(["-s", "test_fixture3.py"])

转载于:https://www.cnblogs.com/guo2733/p/10948477.html

fixture详细介绍-作为参数传入,error和failed区别相关推荐

  1. 什么是计算机?计算机硬件详细介绍和参数解读[2]

    计算机,一般情况下指电脑,但其实计算机是一个很大的概念,从半导体到冯诺依曼架构再到DOS,计算机在当今社会已经出现在了每家每户里,你的手机.平板.电视.扫地机器人,都属于"计算机" ...

  2. uploadify插件可选参数的详细介绍

    uploadify插件可选参数的详细介绍     以下是可选项的参数说明:(红色的属性代表常用的) 1 uploader 上传控件的主体文件,flash控件 默认值='uploadify.swf' 2 ...

  3. [转载] 详细介绍Python函数中的默认参数

    参考链接: Python函数中的默认参数 详细介绍Python函数中的默认参数 import datetime as dt def log_time(message, time=None): if t ...

  4. AI图片生成Stable Diffusion参数及使用方式详细介绍

    Stable Diffusion环境搭建与运行请参考上一篇博文<AI图片生成Stable Diffusion环境搭建与运行>,地址为"https://blog.csdn.net/ ...

  5. Jquery中AJAX参数详细介绍

    转载:http://www.cnblogs.com/qiufuwu618/archive/2012/12/20/2826190.html Jquery中AJAX参数详细列表: 参数名 类型 描述 ur ...

  6. Cmake参数详细介绍

    前言 CMake 是一个高效的C/C++ 代码(包括 JNI 开发)编译工具,而CMake 的使用,作为开发者最关心的就是如何编写 CMakeLists.txt .今天就以Android studio ...

  7. lgg7深度详细参数_石材雕刻机加工程序菜单栏目按钮相关功能详细介绍

    石材雕刻机软件的加工程序菜单栏目功能非常多.想要了解每一个按钮的对应功能可能要花上一段时间,看到这篇文章的读者有福啦,因为酬信雕刻机小编已经为大家详细的整理了菜单栏目按钮相关功能详细介绍. 酬信石材雕 ...

  8. deepin系统使用ifconfig -a 输出参数详细介绍

    deepin系统使用ifconfig -a 输出参数详细介绍 xys@xys-PC:~$ ifconfig -a enp4s0: flags=4163<UP,BROADCAST,RUNNING, ...

  9. 超详细STPS5L60S规格参数介绍

    超详细STPS5L60S规格参数介绍 规格参数 二极管类型:肖特基 二极管型:Schottky 电压 - 直流反向(VR)(最大值):60V 电流 - 平均整流(Io):5A 电压 - 正向(Vf)( ...

最新文章

  1. 配置Open***使用User/Pass方式验证登录
  2. (C++)判断一个序列是non-increasing/non-decreasing还是两者都不的两个方法
  3. Flex3双向绑定完善版
  4. MySQL——排序查询
  5. (4) ebj学习:ejb发布web service
  6. PopupWindow 使用详解(二) Popwindow 制作常见花哨效果
  7. 优先队列——斐波那契堆(without source code)
  8. python编程制作接金币游戏,闪电侠接金币的FlashMan类
  9. linux传几百G文件,为什么我不推荐另外2种快速传几百G文件的方法!
  10. CE修改器入门:查找共享代码
  11. Win7 SP1 安装 .NET Framework 4.6.2,提示“时间戳签名和或证书无法验证或已损坏”
  12. 苹果手机如何制作铃声
  13. Vue 中使用Echarts构建3D地球
  14. aardio修改图标
  15. 【SaaS播客】onboard4. 连线硅谷顶尖Product-Led Growth公司产品经理,聊聊如何打造一流PLG产品
  16. 3ds Max 2018: Mastering UVW Mapping 3ds Max 2018:掌握UVW映射 Lynda课程中文字幕
  17. 智多星骗子行为让人发指
  18. Linux服务器性能评估
  19. AD8255手电筒芯片 双路LED控制芯片 支持多种模式 外围简单
  20. CocoStudio UI 编辑器的使用

热门文章

  1. 11gR2 GI和DB安装目录权限属主被修改后的恢复方法
  2. Java基础班学习笔记(13)IO流
  3. T-SQL WITH 分号问题
  4. Service Manager 的系统要求
  5. Python基础01-Python环境搭建与HelloWorld
  6. oracle数据库有哪些文件构成,Oracle数据库架构中包括几层?每层都有什么元素?...
  7. meetup_如何使用标准库和Node.js构建Meetup Slack机器人
  8. git 代理 git_如何不再害怕GIT
  9. java web dao_JavaWeb项目,DAO应该怎么写?
  10. Git-remote Incorrect username or password ( access token )