From: https://www.cnblogs.com/fnng/p/4774676.html

Python单元测试框架之pytest -- 断言

2015-08-31 23:57 by 虫师, 7377 阅读, 0 评论, 收藏, 编辑

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

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

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

比较大小与是否相等                      

test_assert.py

#coding=utf-8
import pytest # 功能
def add(a,b):
return a + b # 测试相等
def test_add():
assert add(3,4) == 7 # 测试不相等
def test_add2():
assert add(17,22) != 50 # 测试大于
def test_add3():
assert add(17,22) <= 50 # 测试小于
def test_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.2
rootdir: D:\pyse\pytest\test_case, inifile:
plugins: html
collected 4 items test_assert.py ...F ================================== FAILURES ===================================
__________________________________ test_add4 __________________________________ def test_add4():
> assert add(17,22) >= 50
E assert 39 >= 50
E + 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
import pytest # 测试相等
def test_in():
a = "hello"
b = "he"
assert b in a # 测试不相等
def test_not_in():
a = "hello"
b = "hi"
assert b not in a if __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.2
rootdir: D:\pyse\pytest\test_case, inifile:
plugins: html
collected 2 items test_assert2.py F. ================================== FAILURES ===================================
___________________________________ test_in ___________________________________ def test_in():
a = "hello"
b = "hi"
> assert b in a
E assert '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
import pytest #用于判断素数
def is_prime(n):
if n <= 1:
return False
for i in range(2, n):
if n % i == 0:
return False
return True # 判断是否为素数
def test_true():
assert is_prime(13) # 判断是否不为素数
def test_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.2
rootdir: D:\pyse\pytest\test_case, inifile:
plugins: html
collected 1 items test_assert3.py F ================================== FAILURES ===================================
__________________________________ test_true __________________________________ def test_true():
> assert not is_prime(7)
E assert not True
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单元测试框架之pytest 4 -- 断言的更多相关文章

  1. Python单元测试框架之pytest 3 -- fixtures

    From: https://www.cnblogs.com/fnng/p/4769020.html Python单元测试框架之pytest -- fixtures 2015-08-29 13:05 b ...

  2. Python单元测试框架之pytest 2 -- 生成测试报告

    From: https://www.cnblogs.com/fnng/p/4768239.html Python单元测试框架之pytest -- 生成测试报告 2015-08-29 00:40 by ...

  3. Python单元测试框架之pytest -- 断言

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

  4. Python单元测试框架:pytest

    (一)介绍 pytest是一个非常成熟的全功能的Python测试框架,主要特点有以下几点: 1.简单灵活,容易上手: 2.支持参数化: 3.能够支持简单的单元测试和复杂的功能测试,还可以用来做sele ...

  5. Python单元测试框架之pytest -- 生成测试报告

    继续pytest单元测试框架的学习,pytest可以生成多种类型的测试报告.这一节就来学习pytest如何生成测试报告. 创建test_calss.py 测试用例文件,这里以测试该文件为例. #cod ...

  6. Python单元测试框架之pytest 1 ---如何执行测试用例

    From: https://www.cnblogs.com/fnng/p/4765112.html 介绍   pytest是一个成熟的全功能的Python测试工具,可以帮助你写出更好的程序. 适合从简 ...

  7. Python单元测试框架之pytest -- fixtures

    fixtures不太好翻译,可看作是夹心饼干最外层的两片饼干.通常用setup/teardown来表示.它主要用来包裹测试用例,为什么需要这样的饼干呢?我们以web自动化测试为例,例如,要测试的某系统 ...

  8. python单元测试框架笔记

    目录 单元测试概述 什么是单元测试 单元测试什么进行? 单元测试由谁负责? 单元测试需要注意 单元测试覆盖类型 python 单元测试框架 unittest pytest 测试框架 单元测试概述 什么 ...

  9. [译]PyUnit—Python单元测试框架(1)

    1. 原文及参考资料 原文链接:http://docs.python.org/2/library/unittest.html# 参考文档: http://pyunit.sourceforge.net/ ...

随机推荐

  1. Python之路,第十六篇:Python入门与基础16

    python3   bytes 和 bytearrary bytes 二进制文件的读写: 什么是二进制文件读: 文件中以字节(byte)为单位存储,不以换行符(\n)为单位分隔内容的文件: f = o ...

  2. windows 下安装composer

    安装 1.在PHP目录下,打开php.ini文件,开启openssl扩展.去掉extension=php_openssl.dll前面的分号(;) 2.把php目录添加到环境变量(和php.exe同级目 ...

  3. centos6安装opencv2

    环境 centos6.5 opencv2.4 python2.6(centos自带的) 下载 opencv可从GitHub下载https://github.com/opencv/opencv/tree ...

  4. 欧拉函数  已经优化到o(n)

    欧拉函数 ψ(x)=x*(1-1/pi)  pi为x的质数因子 特殊性质(图片内容就是图片后面的文字) 欧拉函数是积性函数——若m,n互质, ψ(m*n)=ψ(m)*ψ(n): 当n为奇数时,   ψ ...

  5. Python下载与安装配置

    最近想学习Python那就开始吧 首先就是下载安装了 Python最新源码,二进制文档,新闻资讯等可以在Python的官网查看到: Python官网:https://www.python.org/ 你 ...

  6. 浮动IP(Floating IPs):开始构建你的高可用性的应用

    高可用性是所有生产环境的关键.开发者因此可以高枕无忧因为他们知道他们的应用被设计为可以承受住故障. 今天,我们非常激动的宣布我们应用了浮动IP技术.浮动IP指的是一个IP地址可以立即从一个Drople ...

  7. Java数组逆序排列

    //逆序排列原理 /* A: 数组逆序原理* a: 题目分析* 通过观察发现,本题目要实现原数组元素倒序存放操作.即原数组存储元素为{12,69,852,25,89,588},逆序后为原数组存储元素变 ...

  8. MySQL Lock--并发插入导致的死锁

    ============================================================================ 测试脚本: 表结构: CREATE TABLE ...

  9. day 53 js学习之

    ---恢复内容开始--- 1.昨日作业讲解 弄一个上图一样的选择器,可以全选,可以反选,取消 <!DOCTYPE html> <html lang="zh-CN" ...

  10. Singer 学习二 使用Singer进行gitlab 2 postgres 数据转换

    Singer 可以方便的进行数据的etl 处理,我们可以处理的数据可以是api 接口,也可以是数据库数据,或者 是文件 备注: 测试使用docker-compose 运行&&提供数据库 ...