关于pytest的入门教程,官网及网上已经很多了,那再多一点也无所谓吧!OK,进入正题~

  下面是一个测试用例,test_one.py

def test_passing():
    assert (1, 2, 3) == (1, 2, 3)

  在用例当前路径打开终端,输入pytest test_one.py,运行结果如下:

============================= test session starts =============================

platform win32 -- Python 3.7.0, pytest-3.9.2, py-1.5.4, pluggy-0.8.0

rootdir: G:\pytest\bopytest-code\code\ch1, inifile:

collected 1 item

test_one.py .                                                            [100%]

========================== 1 passed in 0.10 seconds ===========================

  下面来逐句说明下pytest运行单个测试文件时的控制台输出信息:

============================= test session starts =============================

  pytest为每段测试会话(session)做了明确的分隔,一段会话就是pytest的一次调用,它可能包括多个目录下被执行的测试用例。

platform win32 -- Python 3.7.0, pytest-3.9.2, py-1.5.4, pluggy-0.8.0

  我使用的windows电脑,所以显示的是platform win32。接着显示Python、Pytest以及pytest包的版本。py和pyluggy都是pytest包,用于pytest的实现,均由pytest团队开发维护。

rootdir: G:\pytest\bopytest-code\code\ch1, inifile:

  rootdir(当前起始目录)是pytest搜索测试代码时最常使用的目录,inifile用于列举配置文件(这里没有指定),文件名可能是pytest.ini、tox.ini或者setup.cfg。

collected 1 item

  搜索范围内找到一个名为test_one.py的测试条目。

test_one.py .                                                            [100%]

  test_one.py表示测试文件,每个文件的测试情况占据一行,后接的一个点号表示该测试用例已通过。点号仅仅表示通过,而Failurt(失败)、error(异常)、skip(跳过)、xfail(预期失败)、xpass(预期失败但通过)会被分别标记为F、E、s、x、X。使用-v或--verbose可以看到更多细节。100%表示测试完毕。

========================== 1 passed in 0.10 seconds ===========================

  表示测试通过的数量以及这段会话耗费的时间,如果存在未通过的测试用例,则会根据未通过的类型列举数量。

如上面提到的如果想查看详情,可以在pytest后面加上-v或者--verbose选项,pytest -v test_one.py:

============================= test session starts =============================

platform win32 -- Python 3.7.0, pytest-3.9.2, py-1.5.4, pluggy-0.8.0 -- f:\progr am files\python\python.exe

cachedir: .pytest_cache

rootdir: G:\pytest\bopytest-code\code\ch1, inifile:

collected 1 item

test_one.py::test_passing PASSED                                         [100%]

========================== 1 passed in 0.02 seconds ===========================

  加上-v后,会在测试文件名后显示函数名以及大写的测试结果。如果使用的彩色终端,那么PASSED和底部线条都是绿色的。如下:

  

  下面是一个失败的测试用例,test_two.py:

def test_failing():
    assert (1, 2, 3) == (3, 2, 1)

  运行结果如下:

  

  pytest展示了很清楚的失败信息,这也是它受欢迎的原因之一。

  如上,pytest有一块专门的区域展示test_failing的失败信息,它能准确指出失败原因:index 0 is mismatch。并且重要的提示信息用红色字体显示,以方便用户阅读。如果你仔细观察,还有一条提示指出,使用-v可以得到更完整的前后对比信息,如下图:

  

  pytest添加几个脱字符(^),准确地指出了前后的区别。

  终端运行pytest --help:

  usage: pytest [options] [file_or_dir] [file_or_dir] [...]

  第一句就说明了使用语法,如果你不提供任何参数,pytest会在当前目录以及子目录寻找测试文件,然后运行搜索到的测试代码。如果你提供一个或者多个文件名、目录名,pytest会逐个查找并运行所有测试。为了搜索到所有测试代码,pytest会递归遍历每个目录及其子目录。

  如在之前路径下直接运行pytest,结果如下 :

  

  也可以在pytest中指定需要测试的文件名或者目录,或者预先切换到需要运行的目录:

  

  我们把pytest搜索测试文件和测试用例的过程称为测试搜索(test discovery)。只要你按pytest的命名规则,pytest就能自动搜索到所有待执行的测试用例。

  以下是几条主的命名规则:

  1. 测试文件应当命名为 test_<something>.py或者<somethins>_test.py

  2. 测试函数、测试类方法应当命名为test_<something>

  3. 测试类应当命名为Test<Something>.

  

pytest 入门及运行的更多相关文章

  1. Linux入门:运行级别解析

    Linux入门:运行级别解析   一.查看当前运行级别 Ubuntu中,runlevel命令 可以查看当前运行级别: CentOS中,who -r 命令查看当前运行级别:   www.2cto.com ...

  2. 数据库入门之运行原始 SQL 查找

    数据库入门之运行原始 SQL 查找 一旦你设置好了数据库连接,就可以使用 DB facade 来进行查找.DB facade 提供每个类型的查找方法:select.update.insert.dele ...

  3. Activity工作流(2)-入门安装运行第一个例子

    转: Activity工作流(2)-入门安装运行第一个例子 置顶 2017年05月24日 15:58:50 li_ch_ch 阅读数:24432   版权声明:本文为博主原创文章,未经博主允许不得转载 ...

  4. Python测试框架pytest入门基础

    Pytest简介 Pytest is a mature full-featured Python testing tool that helps you write better programs.T ...

  5. 1.pytest入门

    一.pytest单元测试框架 概念:单元测试是指在软件开发中,针对软件的最小单位(函数.方法等)进行正确性的检查测试          单元测试框架是自动化测试框架中的组成部分之一           ...

  6. hive UDAF开发入门和运行过程详解(转)

    介绍 hive的用户自定义聚合函数(UDAF)是一个很好的功能,集成了先进的数据处理.hive有两种UDAF:简单和通用.顾名思义,简单的UDAF,写的相当简单的,但因为使用Java反射导致性能损失, ...

  7. Hadoop(六)MapReduce的入门与运行原理

    一 MapReduce入门 1.1 MapReduce定义 Mapreduce是一个分布式运算程序的编程框架,是用户开发“基于hadoop的数据分析应用”的核心框架: Mapreduce核心功能是将用 ...

  8. SpringBoot框架:快速入门搭建运行一个应用程序(一)

    一.环境配置 Java环境:1.8版本 开发工具:IntelliJ IDEA 二.简单应用 1.创建项目 选择创建的项目类型为Spring Initializr,Project SDK选择1.8版本的 ...

  9. pytest - 失败重运行机制:rerun

    失败重运行机制 用例失败的情况下,可以重新运行用例 一旦用例失败,马上重新运行 安装插件:pip install pytest-rerunfailures 使用命令:--reruns 重试次数 如 - ...

随机推荐

  1. Js获取iframe子页面全局变量

    项目中通过iframe内嵌了一个子页面,子页面定义了一些全局变量,父页面需要获取子页面的全局变量,做了一些测试(我的环境IE10和Firefox32.0.3),得出如下结论: IE下: window. ...

  2. xpath定位--绝对与相对的定位

    xpath定位--绝对与相对的定位: xpath定位即为xml路径语言,它是一种用来确定xml文档中某部分位置的语言,xpath基于xml的树状结构,提供在数据结构中找寻节点的能力 xpath的相对定 ...

  3. Python3 len()方法

    Python3 len()方法  Python3 字符串 描述 Python len() 方法返回对象(字符.列表.元组等)长度或项目个数. 语法 len()方法语法: len( s ) 参数 s - ...

  4. 使用maven将项目热发布到tomcat7的坑

    首先是配置tomcat的用户权限问题,最好是配置最大的权限,要不然会报错,我之前就是一直报错 <role rolename="manager"/> <user u ...

  5. subprocess 粘包问题

    1.执行命令: 在py代码中去如何调用操作系统的命令 新模块:subprocess r = subprocess.Popen('ls',shell=True,stdout=subprocess.PIP ...

  6. 84. Largest Rectangle in Histogram (Array, Stack; DP)

    Given n non-negative integers representing the histogram's bar height where the width of each bar is ...

  7. Monkey原理初步和改良优化--Android自动化测试学习历程

    章节:自动化基础篇——Monkey原理初步和改良优化(第三讲) 主要讲解内容与笔记: 一.理论知识: 直接看文档,来了解monkey的概念.基本原理,以及如何使用. First,what is And ...

  8. 【校招面试 之 C/C++】第16题 C++ new和delete的实现原理

    1.new new操作针对数据类型的处理,分为两种情况: (1)简单数据类型(包括基本数据类型和不需要构造函数的类型) 代码实例: int* p = new int; 汇编码如下: int* p = ...

  9. 单词拆分 I · Word Break

    [抄题]: 给出一个字符串s和一个词典,判断字符串s是否可以被空格切分成一个或多个出现在字典中的单词. s = "lintcode" dict = ["lint" ...

  10. 算法笔记_067:蓝桥杯练习 算法训练 安慰奶牛(Java)

    目录 1 问题描述 2 解决方案   1 问题描述 问题描述 Farmer John变得非常懒,他不想再继续维护供奶牛之间供通行的道路.道路被用来连接N个牧场,牧场被连续地编号为1到N.每一个牧场都是 ...