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

参考

Pytest 简明教程的更多相关文章

  1. 2013 duilib入门简明教程 -- 第一个程序 Hello World(3)

    小伙伴们有点迫不及待了么,来看一看Hello World吧: 新建一个空的win32项目,新建一个main.cpp文件,将以下代码复制进去: #include <windows.h> #i ...

  2. 2013 duilib入门简明教程 -- 部分bug (11)

     一.WindowImplBase的bug     在第8个教程[2013 duilib入门简明教程 -- 完整的自绘标题栏(8)]中,可以发现窗口最大化之后有两个问题,     1.最大化按钮的样式 ...

  3. 2013 duilib入门简明教程 -- 部分bug 2 (14)

        上一个教程中提到了ActiveX的Bug,即如果主窗口直接用变量生成,则关闭窗口时会产生崩溃            如果用new的方式生成,则不会崩溃,所以给出一个临时的快速解决方案,即主窗口 ...

  4. 2013 duilib入门简明教程 -- 自绘控件 (15)

        在[2013 duilib入门简明教程 -- 复杂控件介绍 (13)]中虽然介绍了界面设计器上的所有控件,但是还有一些控件并没有被放到界面设计器上,还有一些常用控件duilib并没有提供(比如 ...

  5. 2013 duilib入门简明教程 -- 事件处理和消息响应 (17)

        界面的显示方面就都讲完啦,下面来介绍下控件的响应.     前面的教程只讲了按钮和Tab的响应,即在Notify函数里处理.其实duilib还提供了另外一种响应的方法,即消息映射DUI_BEG ...

  6. 2013 duilib入门简明教程 -- FAQ (19)

        虽然前面的教程几乎把所有的知识点都罗列了,但是有很多问题经常在群里出现,所以这里再次整理一下.     需要注意的是,在下面的问题中,除了加上XML属性外,主窗口必须继承自WindowImpl ...

  7. Mac安装Windows 10的简明教程

    每次在Mac上安装Windows都是一件非常痛苦的事情,曾经为了装Win8把整台Mac的硬盘数据都弄丢了,最后通过龟速系统恢复模式恢复了MacOSX(50M电信光纤下载了3天才把系统下载完),相信和我 ...

  8. Docker简明教程

    Docker简明教程 [编者的话]使用Docker来写代码更高效并能有效提升自己的技能.Docker能打包你的开发环境,消除包的依赖冲突,并通过集装箱式的应用来减少开发时间和学习时间. Docker作 ...

  9. 2013 duilib入门简明教程 -- 总结 (20)

        duilib的入门系列就到尾声了,再次提醒下,Alberl用的duilib版本是SVN上第个版本,时间是2013.08.15~       这里给出Alberl最后汇总的一个工程,戳我下载,效 ...

随机推荐

  1. jQuery-插入内容-新增内容

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  2. shadow一键安装

    https://blog.csdn.net/qq_4278923/article/details/80909686

  3. ActiveMQ之spring集成消息转换器MessageConverter

    MessageConverter的作用主要有两方面,一方面它可以把我们的非标准化Message对象转换成我们的目标Message对象,这主要是用在发送消息的时候:另一方面它又可以把我们的Message ...

  4. linux 监控脚本运行时间

    虽然可以使用time命令,但是有时候会有写日志之类的需求. 使用如下脚本可以计算时间: #!/bin/bash sdate=`date +%s.%N` edate=`date +%s.%N` echo ...

  5. Unity shader学习之Forward Rendering Path

    Forward rendering path shader如下: // Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObje ...

  6. dp入门 石子相邻合并 详细带图讲解

    题目: 有N堆石子,现要将石子有序的合并成一堆,规定如下: 1.每次只能移动相邻的2堆石子合并  2.合并花费为新合成的一堆石子的数量. 求将这N堆石子合并成一堆的总花费最小(或最大). 样例: 输入 ...

  7. Vue系列之 => 使用第三方animated.css动画

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  8. SiteCore Experience Analytics-体验分析

    体验分析   Sitecore Experience Analytics为营销人员和营销分析师提供仪表板和报告,以识别从其网站和可能的其他外部数据源收集的体验数据的模式和趋势. 体验分析报告示例:   ...

  9. Sql日期时间格式转换[zhuan]

    sql server2000中使用convert来取得datetime数据类型样式(全) 日期数据格式的处理,两个示例: CONVERT(varchar(16), 时间一, 20) 结果:2007-0 ...

  10. [NOIP2005普及组]采药(01背包)

    题目描述 描述 辰辰是个很有潜能.天资聪颖的孩子,他的梦想是称为世界上最伟大的医师.为此,他想拜附近最有威望的医师为师.医师为了判断他的资质,给他出了一个难题.医师把他带到个到处都是草药的山洞里对他说 ...