小米测试总监一文教你Python断言

Posted flowtoken1024532

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了小米测试总监一文教你Python断言相关的知识,希望对你有一定的参考价值。

简介

无论功能测试、自动化测试,还是单元测试,一般都会预设一个正确的预期结果,而在测试执行的过程中会得到一个实际的结果。测试的成功与否就是拿实际的结果与预期的结果进行比较,这个比的过程实际就是断言(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:pysepytest est_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,所有最后一条用例失败。

对面试经验、软件、接口、自动化测试感兴趣可以175317069,群内会有不定期的免费资料链接发放,这些资料都是从各个技术网站搜集、整理出来的。如果你有好的学习资料可以私聊发我,我会注明出处之后分享给大家。

技术图片

 

二、测试包含或不包含

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:pysepytest est_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:pysepytest est_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,因此,用例执行失败。

以上是关于小米测试总监一文教你Python断言的主要内容,如果未能解决你的问题,请参考以下文章

一文教你用Postman做接口测试建议收藏

3年百度总监教你软件测试环境的搭建

postman添加断言

一文教你如何处理高并发

接口测试很难吗?一文教你用Postman轻松搞定接口测试

一文教你Python Web异步框架