Pytest 简明教程

pytest-learn

通过文章 Python 单元测试框架之 Pytest 剖解入门(第一篇) 学习 Pytest。

有很多的第三方插件可以自定义扩展,并且支持 Allure,生成可视化的测试报告和测试结果,并能输出 log 信息

说明

本文实验环境为:

  • windows 7
  • python 3.7.0
  • pytest version 4.0.1

安装

pip install -U pytest
pytest --version # This is pytest version 4.0.1
# 安装插件
pip install pytest-html # 自动生成 HTML 格式测试报告
pip install pytest-autochecklog # 不只是自动生成测试日志
pip install pytest-describe # 给测试用例一个美丽的名字

Pycahrm 配置 Pytest

File -> Settings -> Tools -> Python Integrated Tools,在 Default test runner 中选择 Pytest 。我们可以回到写有测试函数的文件中直接右键,会出现一个Run ‘py.test‘ for project_name,直接点击即可运行自动化测试。

Pytest 测试样例规范

  • 测试文件以 test_ 开头(以 _test 结尾也可以)
  • 测试类以 Test 开头,并且不能带有 init 方法
  • 测试函数以 test_ 开头
  • 断言使用基本的 assert 即可

创建第一个测试用例

# content of test_sample.py
def func(x):
    return x + 1

def test_answer():
    assert func(3) == 5

直接在该文件夹下打开命令行,输入pytest即可运行。

断言某个异常会引发

# content of test_sysexit.py
import pytest
def f():
    raise SystemExit(1)

def test_mytest():
    with pytest.raises(SystemExit):
        f()

运行如下命令:

pytest -q test_sysexit.py # 用例通过 -q 表示 quite

在一个 class 中组合多个测试

一旦开发了多个测试,您可能希望将它们分组到一个类中。 pytest 可以轻松创建包含多个测试的类:

# 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 -q test_class.py

为功能测试请求一个唯一的临时目录

pytest 提供 Built fixtures/function arguments 来请求任意资源,比如一个独一无二的临时目录:

# content of test_tmpdir.py
def test_needsfiles(tmpdir):
    print(tmpdir)
    assert 0
pytest -q test_tmpdir.py

pytest 会在测试函数调用之前,查找并调用一个fixture factory来创建这个资源。 在这个测试用例运行之前,pytest 为每个测试调用创建独一无二的目录。

关于提供的tmpdir更多的信息,可以查询Temporary diretories and files

可以通过如下命令查看自带的 pytest fixtures

pytest --fixtures   # shows builtin and custom fixtures

Note: 命令行除非加上 -v ,否则如上命令将会自动省略_开头的fixtures

生成测试报告

pytest-html

# 安装插件
pip install -U pytest-html

运行:

pytest --html=report.html

参考

原文地址:https://www.cnblogs.com/michael-xiang/p/10466833.html

时间: 2024-10-02 19:18:13

Pytest 简明教程的相关文章

Lisp简明教程

此教程是我花了一点时间和功夫整理出来的,希望能够帮到喜欢Lisp(Common Lisp)的朋友们.本人排版很烂还望多多海涵! <Lisp简明教程>PDF格式下载 <Lisp简明教程>ODT格式下载 具体的内容我已经编辑好了,想下载的朋友可以用上面的链接.本人水平有限,如有疏漏还望之处(要是有谁帮我排排版就好了)还望指出!资料虽然是我整理的,但都是网友的智慧,如果有人需要转载,请至少保留其中的“鸣谢”页(如果能有我就更好了:-)). Lisp简明教程 整理人:Chaobs 邮箱:[

Linux防火墙iptables简明教程

前几天微魔部落再次遭受到个别别有用心的攻击者的攻击,顺便给自己充个电,复习了一下linux下常见的防火墙iptables的一些内容,但是无奈网上的很多教程都较为繁琐,本着简明化学习的目的,微魔为大家剔除了许多冗余的内容,提取出尽量多的精华部分成文,和大家共同学习,本文涉及的内容包括如下 Linux防火墙iptables简明教程 1.安装iptables 2.查看现有的iptables规则 3.删除某iptables规则 4.清除现有iptables规则 5.创建规则 6.设置开机启动 7.保存i

Markdown简明教程4-Markdown UML图

1. 前言 Markdown是一种轻量级的标记语言,把作者从繁杂的排版工作中解放出来,实现易读易写的文章写作,已经逐渐成为事实上的行业标准.CSDN博客支持Markdown可以让广大博友更加专注于博客内容,大赞.但是,不少博友可能对Markdown比较生疏,本博接下来用一个系列文章<Markdown简明教程>扼要介绍Markdown,希望可以对大家有所帮助. 系列教程目录 关于Markdown Markdown基本使用 Markdown表格和公式 Markdown UML图 CSDN Mark

JSP 简明教程(二):JSP基本语法

基本语法 JSP只是在html的基础上嵌入一些动态的元素.下面是HelloWorld代码: <html> <% out.println("hello world"); %> </html> 以上代码中的<% %>就是动态元素.JSP中所有的特殊语法如下: <% %>:用于表示一段Java代码.这段代码在编译之后会放在_jspService()方法中. <%! %>:多了一个叹号,也用于表示一段Java代码,但是这段

第一课 C语言简明教程

1序言: 1与Java.C#等高级语言相比,C语言却非常简单,学习简单,使用也简单,但是也非常重要,到目前为止基本上操作系统的内核代码超过百分之九十使用C语言完成,因此学好C语言是学好计算机这门课程的基础,特别是进入系统编程尤为明显. 今天是本人复习C语言课程的第一课,主要重新记录一下C语言的基础知识,这节课涉及到C语言的结构.变量以及类型.输入输出.条件判断以及循环知识. 2知识点: 2.1 C语言的结构 2.1.1 通常情况下C语言程序是由: 1.相关的代码注释,使用/* ··· */可注释

Vbs 脚本编程简明教程之一

-为什么要使用 Vbs ? 在 Windows 中,学习计算机操作也许很简单,但是很多计算机工作是重复性劳动,例如你每周也许需要对一些计算机文件进行复制.粘贴.改名.删除,也许你每天启动 计算机第一件事情就是打开 WORD ,切换到你喜爱的输入法进行文本编辑,同时还要播放优美的音乐给工作创造一个舒心的环境,当然也有可能你经常需要对文本中的某 些数据进行整理,把各式各样的数据按照某种规则排列起来--.这些事情重复.琐碎,使人容易疲劳. 第三方软件也许可以强化计算机的某些功能,但是解决这些重复劳动往

Smarty教程1.引擎定义2.主要优点3.简明教程4.使用判断5.循环数组6.常见问题8.解释程序

Smarty是一个php模板引擎.更准确的说,它分开了逻辑程序和外在的内容,提供了一种易于管理的方法.可以描述为应用程序员和美工扮演了不同的角色,因为在大多数情况下 ,他们不可能是同一个人.例如,你正在创建一个用于浏览新闻的网页,新闻标题,标签栏,作者和内容等都是内容要素,他们并不包含应该怎样去呈现.在Smarty的程序里,这些被忽略了.模板设计者们编辑模板,组合使用html标签和模板标签去格式化这些要素的输出(html表格,背景色,字体大小,样式表,等等).有一天程序员想要改变文章检索的方式(

《Python简明教程》总结

Python经典教程<Python简明教程> 目录: 为什么Python 安装Python 体验Python Python数据类型 运算符与表达式 控制流 函数 模块 数据结构 解决问题 面向对象 输入输出 异常 标准库 更多的内容

Java泛型简明教程

Java泛型简明教程 博客分类: Java综合 JavaApple数据结构CC++ Java泛型简明教程 本文是从 Java Generics Quick Tutorial 这篇文章翻译而来. 泛型是Java SE 5.0中引入的一项特征,自从这项语言特征出现多年来,我相信,几乎所有的Java程序员不仅听说过,而且使用过它.关于Java泛型的教程,免费的,不免费的,有很多.我遇到的最好的教材有: The Java Tutorial Java Generics and Collections ,