在测试用例中,执行完测试用例后,最后一步是判断测试结果是 pass还是fail,自动化测试脚本里面一般把这种生成测试结果的方法称为断言(assert)。
在Pyunit中断言有3种类型情况:
1、基本断言方法
2、比较断言
3、复杂断言:可以处理元组、列表、字典等更复杂的数据类型
下面每一种类型,分别举一个例子
1、基础断言
class Test1(unittest.TestCase):
@classmethod
def setUpClass(cls):
print("=====Test1====\n")
@classmethod
def tearDownClass(cls):
print("=====Test1====\n")
def setUp(self):
print('--------------Test1SetUp--------------\n')
def tearDown(self):
print('--------------Test1Clear--------------\n')
def test_1(self):
self.assertEqual(4,3,"4不等于3")
def test_2(self):
self.assertAlmostEqual(4,4,"等于")
2、比较断言
class Test2(unittest.TestCase):
@classmethod
def setUpClass(cls):
print("=====Test2====\n")
@classmethod
def tearDownClass(cls):
print("=====Test2====\n")
def setUp(self):
#预置环境
print('--------------Test2SetUp--------------\n')
def tearDown(self):
#清理环境
print('--------------Test2Clear--------------\n')
def test_1(self):
self.assertAlmostEqual(4,3)
def test_2(self):
self.assertAlmostEqual(4,3,delta=1)
def test_3(self):
self.assertAlmostEqual(4,3,delta=2)
def test_4(self):
self.assertAlmostEqual(4,4.008,places=1)
def test_5(self):
self.assertAlmostEqual(4,4.008,places=4)
注:assertAlmostEqual(a,b,places=none,msg=none,delta=none),后两个参数不能同时存在,此方法的主要对象是小数。
3、复杂断言
class Test3(unittest.TestCase):
@classmethod
def setUpClass(cls):
print("=====Test3====\n")
@classmethod
def tearDownClass(cls):
print("=====Test3====\n")
def setUp(self):
print('--------------Test3SetUp--------------\n')
def tearDown(self):
print('--------------Test3Clear--------------\n')
def test_1(self):
self.assertListEqual([1,2,3],[1,2,3],"两列表相同")
def test_2(self):
self.assertDictEqual({'a':1,'b':2},{'a':1,"b":3},"两字典不同")
扩展:
前面说到断言的成功和失败,还有一种情况是异常,注意异常和断言的失败是有区别的,如下:
可见,如果是异常,标记是errors。而当是断言失败时,标记为failures。