当前位置: 首页 > 编程日记 > 正文

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

前言

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

相关文章:

哈佛结构和冯诺依曼结构区别。

哈佛结构是一种将程序指令存储和数据存储分开的存储器结构。中央处理器首先到程序指令存储器中读取程序指令内容,解码后得到数据地址,再到相应的数据存储 器中读取数据,并进行下一步的操作(通常是执行)。程序指令存储和…

js 数据函数

//shift:删除原数组第一项,并返回删除元素的值;如果数组为空则返回undefined var a [1,2,3,4,5]; var b a.shift(); //a:[2,3,4,5] b:1 //unshift:将参数添加到原数组开头,并返回数组的长度…

Java项目:平行志愿管理系统(java+Springboot+Maven+mybatis+Vue+Mysql)

源码获取:博客首页 "资源" 里下载! 一、项目简述本系统功能包括: 系统管理,招生计划,学生管理,录取结果,自动分配,调剂管理等等。 二、项目运行 环境配置: J…

冒泡 MS Azure 不便宜。。。

一直在等 MS Azure 中国开卖, 最近有消息说正式商用了。。。 看看去,ok 发现官方网站 很奇葩。没有购买的地方 说毛线 啊 卧槽 欺骗感情还是吊人胃口? 好看了一下VM的价格,卧槽真不便宜。 即使是 768 MB的也要 0.22RMB 小时。本来…

数据库的概念以及MYSQL的安装和卸载

一、数据库的基本概念: 1、什么是数据库? DataBase,简称DB。是用来存储和管理数据的仓库。 2、数据库的特点: 持久化存储数据的。其实数据库就是一个文件系统。方便存储和管理数据使用了统一的方式操作数据库——SQL  3、最热门…

对ARM异常(Exceptions)的理解

对ARM异常(Exceptions)的理解 1 .对 ARM 异常( Exceptions )的理解 所有的系统引导程序前面中会有一段类似的代码,如下: .globl _start ;系统复位位置 _s…

Java项目:花店商城系统(java+Springboot+Maven+mybatis+Vue+Mysql)

源码获取:博客首页 "资源" 里下载! 一、项目简述 本系统功能包括: 商品的分类展示,用户的注册登录,购物车,订单结算,购物车加减,后台商品管理,分类管理&#x…

简单又好看的按钮,扁平化按钮。

原文 http://blog.csdn.net/peijiangping1989/article/details/19333779主题 安卓开发今天分享一下流行的扁平化按钮。完全不需要用到图片哦。效果图如下: 里面有2个按钮都是一样的模式。只要修改的色值就可以。下面跟我来更新你的UI吧。 首先编写 button.xml 代码…

MahApps.Metro

ModernUI for WPF Mahapps.metro home Mahapps.metro Quick start Mahapps.metro controls转载于:https://www.cnblogs.com/xakml/p/3682173.html

用herl工具解决微信内链接或二维码可直接用外部浏览器打开

很多朋友问我怎么解决微信内点击链接或扫描二维码可以直接跳出微信在外部浏览器打开网页链接,其实这并不难,只要我们实现微信跳转功能即可。 下面给大家推荐 herl工具(http://www.nicejump.cn/) 使用步骤 1. 用浏览器打开我们的工…

shell之“/dev/null 21”

shell中可能经常能看到:>/dev/null 2>&1 命令的结果可以通过%>的形式来定义输出 分解这个组合:“>/dev/null 2>&1” 为五部分。 1:> 代表重定向到哪里,例如:echo "123" &g…

Java项目:角色权限后台脚手架系统(java+Springboot+Maven+myBaits-Plus+Vue+Element-UI+Mysql)

源码获取:博客首页 "资源" 里下载! Springboot框架myBaits-PlusMySQL实现的角色权限后台管理脚手架系统实战项目,实现的是所有系统最基础的后台管理功能,有了这个脚手架,以后开发别的项目就在这上面快速增加…

30+程序员,平时都忙些什么事情?平时都想些什么?以后有啥计划?

很多人都说,30岁以后了,写程序还有前途嘛?我有时候也迷茫,但是迷茫过后,总会给自己寻找方向,每个人都需要有个信念、没有信念,活着就没意思,无聊,觉得没奔头了。 废话少说…

用于制图、写电子邮件、创建条形码控件Aspose.Total

2019独角兽企业重金招聘Python工程师标准>>> Aspose.Total 提供了 Aspose 可以使用的任何组件,以及你每年订阅中发布的所有新组件。通过它,你能够有计划地操纵一些商业中最流行的文件格式:Word, Excel, PowerPoint, Project, PDF …

循环for语句 if语句

if语句&#xff1a; if(表达式){ 代码 }else if(表达式){ 代码 } for循环&#xff1a; for(var i0; i<10; i){ alert(1); (弹窗&#xff09; } if语句&#xff1a; if(表达式){ 代码 }else if(表达式){ 代码 } for循环&#xff1a; for(var i0; i<10; i){ alert(1); (弹窗…

Linux中的粘滞位

Linux中的粘滞位 Sticky 位是一个访问权限标志位&#xff0c;可以用来标示文件和路径。 历史&#xff1a; 粘滞位是在1974年Unix的第5版中引入的&#xff0c;用来设置可执行文件。当可执行文件设置粘滞位之后&#xff0c;它能够指示操作系统在程序退出后&#xff0c;保留程序…

Java项目:实现权限管理系统(java+SpringBoot+MyBatis+AOP+LayUI+Mysql)

源码获取&#xff1a;博客首页 "资源" 里下载&#xff01; springbootmybatis使用面向切面编程&#xff08;AOP&#xff09;实现的权限管理系统。 共五个模块&#xff0c;角色管理&#xff0c;菜单管理&#xff0c;实验室管理&#xff0c;学生管理&#xff0c;管理员…

阅读10、11、12章

第10章 假设用户交付给我们一个 任务&#xff0c;然后我们通过调研的出来的结果进行设计&#xff0c;最后的结果跟用户想象的不一样&#xff0c;这应该怎么做&#xff1f; 第11章 团队合作真的需要有那么繁琐的步骤&#xff08;例如每日例会&#xff09;吗&#xff1f; 第12章 …

SQL删除重复数据方法

原文:SQL删除重复数据方法例如&#xff1a; id name value 1 a pp 2 a pp 3 b iii 4 b pp 5 b …

#pragma once与#ifndef

在C/C中&#xff0c;在使用预编译指令#include的时候&#xff0c;为了防止重复引用造成二义性的两种方法。 #ifndef 它不光可以保证同一份文件不会被包含两次&#xff0c;也能够保证不同文件完全相同的内容不会被包含两次。但&#xff0c;同样的&#xff0c;如果自定义的宏名不…

grep 在HP-UX下的递归查找

grep 在HP-UX下的递归查找Linux: man grep 可以看到 -r 选项-R, -r, --recursiveRead all files under each directory, recursively; this is equivalent to the -d recurse option.即&#xff1a;-r 选项可以查找指定目录下每个子目录下的所有文件eg:grep -r "28281&quo…

Java项目:实现个人博客系统(java+springboot+mybatis+redis+vue+elementui+Mysql)

源码获取&#xff1a;博客首页 "资源" 里下载&#xff01; springbootmybatis前端vue&#xff0c;使用前后端分离架构实现的个人博客系统&#xff0c;共7个模块&#xff0c;首页&#xff0c;写博客&#xff0c;博客详情页&#xff0c;评论管理&#xff0c;文章分类&a…

软件工程--总作业(已经完成)

用户调研&#xff1a;http://www.cnblogs.com/OuZeBo/p/4580146.htmlalpha阶段总结&#xff1a;http://www.cnblogs.com/OuZeBo/p/4580146.html对其他组评价的反馈&#xff1a;已评论其他组&#xff0c;暂时没有其他组对我们组进行评论描述项目的典型用户与场景&#xff1a;已完…

linux各文件夹的作用域

目錄應放置檔案內容/bin系統有很多放置執行檔的目錄&#xff0c;但/bin比較特殊。因為/bin放置的是在單人維護模式下還能夠被操作的指令。在/bin底下的指令可以被root與一般帳號所使用&#xff0c;主要有&#xff1a;cat, chmod, chown, date, mv, mkdir, cp, bash等等常用的指…

LOJ 2721 「NOI2018」屠龙勇士——扩展中国剩余定理

题目&#xff1a;https://loj.ac/problem/2721 1.注意别一输入 p[ i ] 就 a[ i ] % p[ i ] &#xff0c;因为在 multiset 里找的时候还需要真实值。 2.注意用 multiset 。并且&#xff0c;因为要 upper_bound( a[ i ] ) &#xff0c;而 a[ i ] 是一个 long long 类型的&#xf…

setuid和setgid

setuid 和 setgid (全称分别是&#xff1a;set user ID upon execution 和 set group ID upon execution)是Unix的访问权限标志位&#xff0c;它允许 用户以可执行文件owner或group的权限来运行这个可执行文件。它们经常适用于&#xff1a;为了运行特定的任务&#xff0c;可以允…

Java项目:宠物医院预约挂号系统(java+JSP+Spring+SpringBoot+MyBatis+html+layui+maven+Mysql)

源码获取&#xff1a;博客首页 "资源" 里下载&#xff01; 一、项目简述功能包括&#xff1a; 用户分为宠物&#xff0c;医生&#xff0c;管理员&#xff0c;宠物主人可进行注册选择医生挂号&#xff0c;选择日期&#xff0c;选择号源&#xff0c;医生可进行宠物接诊…

大智慧面试经验

15-06-18下午1点&#xff0c;大智慧面试&#xff1b; 面试题全英文&#xff0c;第一部分基础的&#xff0c;诸如echo print printf的区别&#xff0c;include与require的区别等&#xff1b; 第二部分细节方面的&#xff0c;如在string中\n的意义&#xff0c;ucwords函数&#x…

Android 获取apk签名的fingerprint

为什么80%的码农都做不了架构师&#xff1f;>>> 假定安装了JDK&#xff0c;如果想查HelloWorld.apk所使用的签名的fingerprint&#xff0c;可以这样做&#xff1a;1. 查找apk里的rsa文件 &#xff08;Windows&#xff09; > jar tf HelloWorld.apk |findstr RSA…

Dinic二分图匹配 || Luogu P3386

题面&#xff1a;【模板】二分图匹配 思路&#xff1a;Dinic实现二分图匹配&#xff0c;要建一个超级源点&#xff08;S&#xff09;和超级汇点&#xff08;T&#xff09;&#xff0c;分别定为NM1和NM2 然后S去和N中的数建正边和反边&#xff0c;正边权值为1&#xff0c;反边权…