1 说明
pytest中使用assert进行断言,和unittest是有区别的,后边详细列举;
pytest中的assert后可以为表达式,为True表示用例通过。
2 Uinttest中的断言
2.1 部分断言
我们写一个class,代码中就可以看到所有的断言:
常用断言:
方法
检查
assertEqual(a, b)
a ==b
assertNotEqual(a, b)
a !=b
assertTrue(x)
bool(x) is True
assertFalse(x)
Bool(x) is False
assertIs(a, b)
a is b
assertIsNot(a, b)
a is not b
assertIsNone(x)
x is None
assertIsNotNone(x)
x is not None
assertIn(a, b)
a in b
assertNotIn(a, b)
a not in b
assertIsInstance(a, b)
isinstance(a,b)
assertNotIsInstance(a, b)
not isinstance(a,b)
2.2 部分举例
import unittest
class TestU ( unittest. TestCase) :
def setUp ( self) - > None :
self. a = 3
self. b = 4
self. c = 3
self. d = 0
def tearDown ( self) - > None :
pass
def test_o ( self) :
self. assertTrue( self. c, msg= "结果为False" )
def test_t ( self) :
self. assertEqual( self. a, self. c, msg= "a和c不相等" )
if __name__ == "__main__" :
unittest. main( )
3 Pytest断言
3.1 常用断言
断言
说明
assert a
判断 a为真
assert not a
判断 a不为真
assert a in b
判断 b 包含 a
assert a == b
判断 a 等于 b
assert a != b
判断 a 不等于 b
3.2 表示方法
import pytest
class TestU ( ) :
def test_f ( self) :
a = 3
b = 4
s = a + b
return s
def test_func ( self) :
assert self. test_f( ) == 7 , "计算结果不是7"
if __name__ == "__main__" :
pytest. main( )
( venv) F: \pytest_study\test_case\test_d> pytest test_assert. py
== == == == == == == == == == == == == == == == == == == == == == test session starts == == == == == == == == == == == == == == == == == == == == == == =
platform win32 - - Python 3.7 .0 , pytest- 6.2 .4 , py- 1.10 .0 , pluggy- 0.13 .1
rootdir: F: \pytest_study\test_case\test_d
plugins: allure- pytest- 2.8 .12 , cov- 2.8 .1 , forked- 1.1 .3 , html- 2.0 .1 , metadata- 1.8 .0 , ordering- 0.6 , xdist- 1.31 .0
collected 2 items
test_assert. py . . [ 100 % ]
== == == == == == == == == == == == == == == == == == == == == == = 2 passed in 0. 31s == == == == == == == == == == == == == == == == == == == == == == ==
3.3 异常断言
可以使用 pytest.raises 作为上下文管理器,当抛出异常时可以获取到对应的异常实例;
目的是断言抛出的异常是不是预期想要的;
比如如下,断言1 / 0
的异常是不是ZeroDivisionError
,其中ZeroDivisionError
是异常类型,用type
从异常信息中获取;division by zero
是异常的值,使用value
从异常信息中获取。
def test_a ( self) :
with pytest. raises( ZeroDivisionError) as e:
1 / 0
assert e. type == ZeroDivisionError
assert "division by zero" in str ( e. value)
『全栈测试技术,分享,共勉,共进,提升』