对于测试来讲,不管是功能测试,自动化测试,还是单元测试。一般都会预设一个正确的预期结果,而在测试执行的过程中会得到一个实际的结果。测试的成功与否就是拿实际的结果与预期的结果进行比较。这个比的过程实际就是断言(assert)。

在unittest单元测试框架中提供了丰富的断言方法,例如assertEqual()、assertIn()、assertTrue()、assertIs()等,而pytest单元测试框架中并没提供特殊的断言方法,而是直接使用python的assert进行断言。

下面我们就来介绍assert 的使用。

比较大小与是否相等

test_assert.py

#coding=utf-8

importpytest#功能

defadd(a,b):return a +b#测试相等

deftest_add():assert add(3,4) == 7

#测试不相等

deftest_add2():assert add(17,22) != 50

#测试大于

deftest_add3():assert add(17,22) <= 50

#测试小于

deftest_add4():assert add(17,22) >= 50

if __name__ == '__main__':

pytest.main("test_assert.py")

定义一个add()函数,用于计算两个入参相加,并将相加的结果返回。

而assert可以使用直接使用“==”、“!=”、“”、“>=”、"<=" 等符号来比较相等、不相等、小于、大于、大于等于和小于等于。

运行结果:

============================= test session starts =============================platform win32-- Python 2.7.10 -- py-1.4.30 -- pytest-2.7.2rootdir: D:\pyse\pytest\test_case, inifile:

plugins: html

collected4items

test_assert.py ...F================================== FAILURES ===================================

__________________________________ test_add4 __________________________________

deftest_add4():> assert add(17,22) >= 50Eassert 39 >= 50E+ where 39 = add(17, 22)

test_assert.py:22: AssertionError===================== 1 failed, 3 passed in 0.02 seconds ======================

显然,17加22的结果并不大于50,所有最后一条用例失败。

测试包含或不包含

test_assert2.py

#coding=utf-8

importpytest#测试相等

deftest_in():

a= "hello"b= "he"

assert b ina#测试不相等

deftest_not_in():

a= "hello"b= "hi"

assert b not inaif __name__ == '__main__':

pytest.main("test_assert2.py")

通过定义a和b 字符串变量来比较包含的关系。

assert 可以直接使用 in 和not in 来比较包含与不包含。

运行结果:

============================= test session starts =============================platform win32-- Python 2.7.10 -- py-1.4.30 -- pytest-2.7.2rootdir: D:\pyse\pytest\test_case, inifile:

plugins: html

collected2items

test_assert2.py F.================================== FAILURES ===================================

___________________________________ test_in ___________________________________

deftest_in():

a= "hello"b= "hi"

> assert b ina

Eassert 'hi' in 'hello'test_assert2.py:9: AssertionError===================== 1 failed, 1 passed in 0.01 seconds ======================

显然“hello”并不包含“hi”,所以第一条测试用例运行失败。

测试true或false

test_assert3.py

#coding=utf-8

importpytest#用于判断素数

defis_prime(n):if n <= 1:returnFalsefor i in range(2, n):if n % i ==0:returnFalsereturnTrue#判断是否为素数

deftest_true():assert is_prime(13)#判断是否不为素数

deftest_true():assert not is_prime(7)if __name__ == '__main__':

pytest.main("test_assert3.py")

通过is_prime()函数来判断n 是否为素数(只能被1和它本身整除的数)。返回值为ture或false。

通过assert不需要任何辅助符号,直接判断对象是否为ture,而assert not 用于判断是否为false。

运行结果:

============================= test session starts =============================platform win32-- Python 2.7.10 -- py-1.4.30 -- pytest-2.7.2rootdir: D:\pyse\pytest\test_case, inifile:

plugins: html

collected1items

test_assert3.py F================================== FAILURES ===================================

__________________________________ test_true __________________________________

deftest_true():> assert not is_prime(7)

Eassert notTrue

E+ where True = is_prime(7)

test_assert3.py:22: AssertionError========================== 1 failed in 0.01 seconds ===========================

显示,对于第二条测试用例来讲,7是素数,所以,is_prime()函数的返回结果是Ture,而assert not 需要的正确结果是False,因此,用例执行失败。

python单元测试断言_Python单元测试框架之pytest -- 断言-阿里云开发者社区相关推荐

  1. 如何阅读python文档_python 文档怎么看-问答-阿里云开发者社区-阿里云

    调用help函数,可以看到一个函数或者方法的字符串文档. In [1]: import requests In [2]: help(requests.get) Help on function get ...

  2. python中右对齐_python中如何右对齐-问答-阿里云开发者社区-阿里云

    例如,有一个字典如下: dic = { "name": "botoo", "url": "http://www.123.com&q ...

  3. python妹子图_python 妹子图的搜索结果-阿里云开发者社区

    Python老司机手把手带你写爬虫,整站下载妹子图,一次爽个够! 其实很多编程语言都可以做爬虫,例如java.c#.php等等甚至excel都可以抓网页的图表,那么为什么我们要用Python呢?它简单 ...

  4. python调用 matlab库_python调用matlab的搜索结果-阿里云开发者社区

    2018python技术问答集锦,希望能给喜欢python的同学一些帮助 小编发现问答专区中有很多人在问关于python的问题,小编把这些问题汇总一下,希望能给喜欢python的大家一些启示和帮助 本 ...

  5. python 黑客工具开发_python黑客软件的搜索结果-阿里云开发者社区

    带你读<Python科学计算(原书第2版)>之一:导论 计算机科学丛书点击查看第二章点击查看第三章Python科学计算(原书第2版)Python for Scientists, Secon ...

  6. python import from区别_python import 与 from .... import ...区别-阿里云开发者社区

    在python用import或者from...import来导入相应的模块. 模块其实就一些函数和类的集合文件,它能实现一些相应的功能,当我们需要使用这些功能的时候, 直接把相应的模块导入到我们的程序 ...

  7. python中如何输出中文_python中怎么输出中文-问答-阿里云开发者社区-阿里云

    方法一: 用encode和decode 如: ? 1 2 3 4 5 6 7 8 9 10 11 import os.path import xlrd,sys Filename='/home/tom/ ...

  8. python类的属性和对象属性_python 类属性、对象属性-阿里云开发者社区

    类的普通属性: dir(Myclass), 返回一个key列表: Myclass.__dir__,返回一个字典: 1.类的数据属性: 2.类的方法: 类的特殊属性: 1.Myclass.__name_ ...

  9. python安装gz文件_python tar.gz怎么安装-问答-阿里云开发者社区-阿里云

    Windows环境: 安装whl包:pip install wheel -> pip install **.whl 下载whl文件 MySQL_python-1.2.5-cp27-none-wi ...

  10. python怎么打开h5文件_python怎么查看h5文件-问答-阿里云开发者社区-阿里云

    h5接受的数据是矩阵跟mat方法一致,但是具有更强的压缩性能 使用hdf5依赖于Python的工具包:h5py import h5py #导入工具包 import numpy as np HDF5的写 ...

最新文章

  1. fb50 sap 报记账码未定义_SAP隐秘的角落:记账代码Posting Key
  2. MySQL — 索引的慢查询优化与 B+ 树
  3. [2010国家集训队]Crash的旅游计划
  4. jboss 7 as1 日志配置
  5. HBase Shell基本操作
  6. 彻底理解cookie、session、token
  7. oracle数据库连接检查,检查Oracle数据库的最大连接
  8. 【C++基础学习】C++引用参数与指针参数
  9. 4003基于邻接表的新顶点的增加(C++,附详细解析)
  10. 院内适配层新版框架开发文档
  11. python urllib.parse_Python3 urllib.parse 常用函数示例
  12. nmap命令的安装及用法
  13. CNKI知网查重账号和密码怎么申请
  14. C++ 使用GDI+剪切图片
  15. 3dMax 制作玻璃材质
  16. 超星武汉分公司实习(web前端)第一周
  17. 记PMP 考试2021/06/20总结(含笔记)
  18. 百家号同步公众号的自媒体工具有吗?
  19. 面试时问你对该公司有什么想法如何回答?
  20. 基于stm32的智能小车(远程控制、避障、循迹)

热门文章

  1. python的panda是什么库_Python的Pandas库简述
  2. LinkedList源码阅读笔记(1.8)
  3. Elasticsearch Scale Out
  4. 前端每日实战 2018 年 9 月份项目汇总(共 26 个项目)
  5. 很容易学习的JQuery库 : (八) 杂项 noConflict() 方法
  6. Java从零开始学十四(包和访问控制)
  7. Spark源码系列(四)图解作业生命周期
  8. App-v Client的部署
  9. [CTSC2008]网络管理Network
  10. Android数据库框架-----ORMLite 的基本用法