pytest --fixtures Python版本: Python 2.7、3.4、3.5、3.6、Jython、PyPy-2.3
平台:Unix / Posix和windows
PyPI包名称:pytest
依赖性:py,colorama模块(Windows),
文档如PDF:下载最新
pytest是一个使构建简单和使测试变得容易的框架。测试具有表达性和可读性——不是固定的代码。在几分钟内开始对应用程序或库进行小型单元测试或复杂的功能测试。
安装pytest
1.运行如下代码安装pytest:pip install -U pytest 
2.检查您安装的版本是否正确:pytest --version
创建第一个pytest测试程序
下面用四行代码创建一个简单的测试函数
# -*- coding: utf-8 -*-
# @Time : 2018/7/5 23:57
# @Author : onesilent
# @File : FirstTest.py
# @Project : PythonTestDemo
# content of test_sample.py
def func(x):
return x + 1
def test_answer():
assert func(3) == 5
 
 
 
 
 
执行结果如下(注释:相当于在命令行窗口在当前包下执行pytest,注意:测试文件和测试函数都是以"test_"开头,test可忽略大小写,即可以写成Test)
注意:您可以使用assert语句来验证测试期望。pytest的高级断言内省将会智能地报告assert表达式的中间值,这样您就可以避免unittest遗留的许多名称方法。
 
运行多个测试
pytest运行将执行当前目录及其子目录中所有格式为test_*.py或* _test.py在的py的文件,通俗的说,它遵循探索测试规则。
断言某些代码引发的异常
使用raises帮助程序断言某些代码引发的异常:(使用断言捕获程序异常,pytest -q 是静默执行,加入-q打印的信息会少,下图展示静默执行与非静默执行)
# -*- coding: utf-8 -*-
# @Time : 2018/7/10 23:29
# @Author : onesilent
# @File : test_sysexit.py
# @Project : PythonTestDemo # content of test_sysexit.py
import pytest
def f():
raise SystemExit(1)
def test_mytest():
with pytest.raises(SystemExit):
f()
 
 
在一个类中组合多个测试
一旦开发了多个测试,您可能希望将它们分组到一个类中。 使用pytest更容易创建测试类
包含多个测试:
# -*- coding: utf-8 -*-
# @Time : 2018/7/11 0:00
# @Author : onesilent
# @File : test_class.py
# @Project : PythonTestDemo
# content of test_class.py
class TestClass(object):
def test_one(self):
x = "this"
assert 'h' in x
def test_two(self):
x = "hello"
assert hasattr(x, 'check')
 
pytest在其Python测试发现约定之后发现所有测试,因此它发现两个test_前缀功能。 没有必要继承任何东西。 我们可以通过传递文件名来运行模块:
 
第一次测试通过,第二次测试失败。 您可以在断言中轻松查看中间值以帮助您了解失败的原因。
注意:测试结果中“.”代表成功,F代表失败
 
通过请求唯一临时目录完成功能测试
pytest提供了Builtin fixture / function参数来请求任意资源,比如一个唯一的临时目录:
一下函数执行的tmpdir的默认目录:C:\Users\onesilent\AppData\Local\Temp\pytest-of-onesilent\pytest-1\test_needsfiles0
# -*- coding: utf-8 -*-
# @Time : 2018/7/11 23:57
# @Author : onesilent
# @File : test_tmpdir.py
# @Project : PythonTestDemo # content of test_tmpdir.py
def test_needsfiles(tmpdir):
print (tmpdir)
assert 0
 
 
找出pytest fixtures存在哪种内哪些内置命令
 
pytest --fixtures #此命令显示内置命令和custom fixtures 请注意,除非添加-v选项,否则此命令将省略带有前导_的 fixtures。
 
继续阅读
查看其他pytest资源,以帮助您为自己独特的工作流程自定义测试:
•“通过python -m pytest调用pytest”用于命令行调用示例
•“将pytest与现有测试套件一起使用”以处理预先存在的测试
•“使用属性标记测试函数”以获取有关pytest.mark机制的信息
•“pytest fixture:显式,模块化,可扩展”,为您的测试提供功能基准
•“编写插件”,用于管理和编写插件
•virtualenv和测试布局的“良好集成实践”
pytest fixture 是pytest的高级功能,后面继续学习
 
 
 
 

pytest 一.安装和使用入门的更多相关文章

  1. sass、less和stylus的安装使用和入门实践

    刚 开始的时候,说实话,我很反感使用css预处理器这种新玩意的,因为其中涉及到了编程的东西,私以为很复杂,而且考虑到项目不是一天能够完成的,也很少是 一个人完成的,对于这种团队的项目开发,前端实践用c ...

  2. Linux上安装使用boost入门指导

    Data Mining Linux上安装使用boost入门指导 获得boost boost分布 只需要头文件的库 使用boost建立一个简单的程序 准备使用boost二进制文件库 把你的程序链接到bo ...

  3. Oracle安装及使用入门

    新手Oracle安装及使用入门   一.安装Oracle Step1 下载oracle压缩包并解压到同一文件夹下面 Step2 双击setup.exe进行安装 Step3:进入如下界面配置: 邮箱可不 ...

  4. Postman 安装及使用入门教程(我主要使用接口测试)

    1.Postman 安装及使用入门教程(我主要使用接口测试)Postman的English官网:https://www.getpostman.com/chrome插件整理的Postman中文使用教程( ...

  5. Linux Supervisor的安装与使用入门

    在linux或者unix操作系统中,守护进程(Daemon)是一种运行在后台的特殊进程,它独立于控制终端并且周期性的执行某种任务或等待处理某些发生的事件.由于在linux中,每个系统与用户进行交流的界 ...

  6. 20165223 Linux安装及命令入门

    预备作业3:Linux安装及命令入门 一.VirtualBox和Ubuntu的安装 通过学习实践基于VirtualBox虚拟机安装Ubuntu图文教程,我开始学习虚拟机的安装,根据教程一步步试着安装. ...

  7. Git客户端的安装与配置入门

    GitLab与Git客户端的安装与配置入门,每次配置完一段时间,就忘记配置过程了,为了自己和同学们以后有所参照,特记录了本次下载和配置,其实Git就是一个版本控制系统,类似于SVN,CVS等 下载:W ...

  8. 20155327预备作业3:Linux安装及命令入门

    20155327预备作业3:Linux安装及命令入门 安装Linux操作系统 由于之前安装过所以这里就不再赘述了 掌握Linux命令的学习方法 学习路径: 常用Ubuntu快捷键: CTRL+ALT+ ...

  9. pytest+jenkins安装+allure导出报告

    环境安装: windows7+64位 pytest:4.0.2 allure的安装:allure的python库pytest-allure-adaptor jenkins的安装:2.138.2 JDK ...

随机推荐

  1. 如何解决vux不兼容安卓低版本问题

    最近做移动端H5页面用VUX来写UI组件这块.ios测试的时候没啥大问题,不过在4.4版本的华为手机上测试就崩了.接下来详细记述下崩的几个点. 第一:vux自带的提示框,在低版本安卓系统上全不是居中显 ...

  2. java-索引

    集合 集合之深入理解HashMap HashMap的实现原理,以及在JDK1.7和1.8的区别 Java集合---ConcurrentHashMap原理分析 ConcurrentHashMap原理分析 ...

  3. 关键字new与malloc函数

    做题出bug,OJ说我没有定义new. 纳尼?new还需要定义?不都是直接用的吗,明明在自己的编译器里都可以通过的! 编译器:劳资是C++.... 一番倒腾后发现,我用的C++,但是OJ的编译器是C, ...

  4. Oracle从入门到精通----学习笔记

    书名:<Oracle从入门到精通:视频实战版>秦靖.刘存勇等编著 第4章 SQL基础 1.SQL语言分类 数据定义语言 --- DDL,Data Definition Language 数 ...

  5. js基本知识

    1.js中的数据类型: js中的数据类型有undefined,boolean,number,string,object等5种,前4种为原始类型,第5种为引用类型. 2.typeof 返回的是字符串,有 ...

  6. android checkbox自定义(文字位置、格式等)

    第一种:在原生中只调整显示位置等: <CheckBox android:id="@+id/checkBox8" android:layout_width="wrap ...

  7. Unable to locate appropriate constructor on class报错

    在项目开发中,使用Hibernate里的JPA criteria查询,但是在写完之后使用时,会报错:Unable to locate appropriate constructor on class, ...

  8. ThinkPHP实现支付宝接口功能 代码实例

    我们这里用的是即时到帐的接口,具体实现的步骤如下: [title]一.下载支付宝接口包[/title]下载地址:https://doc.open.alipay.com/doc2/detail?tree ...

  9. 20175213吕正宏 MyCP(课下任务,必做)

    一.任务详情: 编写MyCP.java 实现类似Linux下cp XXX1 XXX2的功能,要求MyCP支持两个参数: java MyCP -tx XXX1.txt XXX2.bin 用来把文本文件( ...

  10. Python来袭,教你用Neo4j构建“复联4”人物关系图谱!

    来源商业新知网,原标题:Python来袭,教你用Neo4j构建“复联4”人物关系图谱!没有剧透! 复仇者联盟 之绝对不剧透 漫威英雄们为了不让自己剧透也是使出了浑身解数.在洛杉矶全球首映礼上记者费尽心 ...