天天看点

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

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

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

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

比较大小与是否相等                      

test_assert.py

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

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

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

  运行结果:

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

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

测试包含或不包含                                                    

test_assert2.py

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

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

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

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

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

测试true或false                         

test_assert3.py

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

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

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

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

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