美文网首页软件测试
Python单元测试框架—断言

Python单元测试框架—断言

作者: 梵音11 | 来源:发表于2020-07-10 19:26 被阅读0次


前言:

对于测试来讲,不管是功能测试,自动化测试,还是单元测试。一般都会预设一个正确的预期结果,而在测试执行的过程中会得到一个实际的结果。测试的成功与否就是拿实际的结果与预期的结果进行比较。这个比的过程实际就是断言(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.2rootdir: D:\pyse\pytest\test_case, inifile:

plugins: html

collected 1 items

test_assert3.py F================================== FAILURES ===================================__________________________________test_true__________________________________def test_true():>assertnotis_prime(7)

E    assertnot True

E    +  where True = is_prime(7)

test_assert3.py:22: AssertionError========================== 1 failedin0.01 seconds ===========================

显示,对于第二条测试用例来讲,7是素数,所以,is_prime()函数的返回结果是Ture,而assert not 需要的正确结果是False,因此,用例执行失败。创建了一个测试交流群,如果对软件测试、接口测试、自动化测试、面试经验交流感兴趣可以加测试交流群:829792258,还会有同行一起技术交流

相关文章

  • unittest断言测试方法

    前言 Python中unittest单元测试框架常用来编写自动化测试脚本。 Python中单元测试的断言方法主要如...

  • python unittest之断言及示例

    前言 python unintest单元测试框架提供了一整套内置的断言方法。 如果断言失败,则抛出一个Assert...

  • Python的Unitest单元测试框架之断言assert

    自动化脚本最重要的是断言,正确设置断言可以有效判断测试用例执行结果。python unitest单元测试框架提供了...

  • Python单元测试框架—断言

    前言: 对于测试来讲,不管是功能测试,自动化测试,还是单元测试。一般都会预设一个正确的预期结果,而在测试执行的过程...

  • 4 Python unittest

    Unittest 模块是Python中有自带的单元测试框架,封装好了断言方法和用例执行前的初始化操作。 TestC...

  • 断言库chai的用法

    工作中经常需要自己写单元测试,而写单元测试除了掌握测试框架,还必须掌握断言库的用法。现就断言库chai的用法作以总...

  • 系统调试

    断言 单元测试 单元测试断言 测试方法 宏定义

  • 2018最值得学习的python!

    xUnit frameworks 单元测试框架 frameworks 框架 unittest - python自带...

  • python单元测试框架

    unittest单元测试框架?什么是unittest? 是python标准的单元测试框架模块2.unittest框...

  • 基于unittest集成你的selenium2测试

    前言 python单元测试框架(The Python Unit Testing Framework)简称PyUni...

网友评论

    本文标题:Python单元测试框架—断言

    本文链接:https://www.haomeiwen.com/subject/klgmcktx.html