import unittest # python自带,不需要额外安装
from ddt import ddt,data,file_data,unpack # 需要 pip install ddt
@ddt # 装饰ddt来声明我要用这个ddt来管理测试类
class CaseDemo(unittest.TestCase):
# 如果希望从外边向测试用例类传参,就需要调用父类的init,从源码可以看到父类只有methodName='runTest'这么一个参数
def __init__(self, methodName='runTest',wechat=None):
super().__init__(methodName=methodName)
self.wechat = wechat
# 在测试用例执行前先执行
def setUp(self) -> None:
# self.kd = KeyDemo('Chrome')
# print(self.wechat)
print('+++++++++++++++++++++++++++++++++++')
pass
# 测试用例执行后紧接着执行
def tearDown(self) -> None:
# self.kd.quit()
print('------------------------------------')
pass
# ======================================================= 跳过 ====================================================
@unittest.skip('我无条件跳过,就无条件跳过')
def test_skip1(self):
print('我还有机会BB么??')
@unittest.skipUnless(1>2, '判断结果为False,我就跳过')
def test_skip2(self):
print('我还有机会BB么??')
@unittest.skipIf(1<2, '判断结果为True,我就跳过')
def test_skip3(self):
print('我还有机会BB么??')
# ======================================================= 预言失败 ================================================
# 预言失败:先执行,如果失败不会报错,会忽略这个测试用例,和跳过的差别在于跳过不执行用例,这个是执行用例失败后跳过
@unittest.expectedFailure
def test_aa(self):
pass
self.assertEqual(123, 321, msg='果然失败了')
# ======================================================= 断言 ====================================================
def test_assert(self):
"""'断言测试,msg是断言失败后提示信息,可以不要'
"""
def _test():
return '老王'
res = _test()
# 各种断言的方法都是内置属性,可以选择合适的来用
self.assertEqual(res,'老赵', msg=f'不是老赵干的别冤枉他,是{res}干的') # 断言value1 == value2
# # 失败后返回 AssertionError: '老王' not found in ['老张', '老李'] : 老王不在嫌疑人里面里面,不是他
# self.assertIn(res,['老张','老李'],msg=f'{res}不在嫌疑人里面里面,不是他')
# # 失败后返回: '老王' is not false : 返回不是False
# self.assertFalse(res,msg='返回不是False')
if __name__ == '__main__':
unittest.main()
欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) | Powered by Discuz! X3.2 |