unittest断言的使用

发布时间:2020-08-06 23:08:13 作者:Winter
来源:ITPUB博客 阅读:178

断言使用

先来看一个实例,在一个测试类MyTestCase中添加多个测试方法和断言


from unittest import TestCase, main, skip
class MyTestCase(TestCase):
    def setUp(self):
        print('setUp')
    def tearDown(self):
        print('tearDown')
    def test_print1(self):
        print('第一个测试用例')
        # unittest框架自带的断言,如果不相等,直接抛出异常,相等什么都不做
        self.assertEqual(200, 200, '测试失败')
    def test_print2(self):
        print('第二个测试用例')
    def test_print3(self):
        print('第三个测试用例')
if __name__ == '__main__':
    main()
========输出========:
setUp
第一个测试用例
tearDown
setUp
第二个测试用例
tearDown
setUp
第三个测试用例
tearDown

这里有三个测试用例,每个测试用例开始之前都先执行了setUp方法,每个测试用例之后都执行了tearDown方法。如果我们想要忽略某个测试用例不执行,要怎么做?比如忽略第三个测试用例,只需要在第三个测试用例之前加上skip装饰器:


@skip('do not need test_print3')
    def test_print3(self):
        print('第三个测试用例')

skip装饰器

之前我们学习了setup方法和setUpClass方法,会在每个测试用例的前后都执行一遍,那如果我们只想要在所有测试用例的前后执行一遍,也就是在整个类中只执行一遍要怎么办呢,我们可以使用setUpClass方法和tearDownClass方法:


from unittest import TestCase, main, skip
class MyTestCase(TestCase):
    @classmethod
    def setUpClass(cls):
        print('setUpClass')
    @classmethod
    def tearDownClass(cls):
        print('tearDownClass')
    def test_print1(self):
        print('第一个测试用例')
        # unittest框架自带的断言,如果不相等,直接抛出异常,相等什么都不做
        self.assertEqual(200, 200, '测试失败')
    def test_print2(self):
        print('第二个测试用例')
    @skip('do not need test_print3')
    def test_print3(self):
        print('第三个测试用例')
if __name__ == '__main__':
    main()
==========输出===========
setUpClass
第一个测试用例
第二个测试用例
tearDownClass

setUpClass和tearDownClass的使用

引入测试用例集,将测试用例与测试集合分开


from unittest import TestCase
from unittest import skip
from unittest import main as main_method
class MyTestCase(TestCase):
    @classmethod
    def setUpClass(cls):
        print('setUpClass')
    @classmethod
    def tearDownClass(cls):
        print('tearDownClass')
    def test_print1(self):
        print('第一个测试用例')
        self.assertEqual(200, 200, '测试失败')
    def test_print2(self):
        print('第一个测试用例')
    @skip('do not need test_print3')
    def test_print3(self):
        print('第一个测试用例')
if __name__ == '__main__':
    main_method()


from test1 import MyTestCase
from unittest import TestSuite, TextTestRunner
suite = TestSuite()
# 在测试用例集中添加测试用例, 只添加两个测试的方法
suite.addTest(MyTestCase('test_print1'))
suite.addTest(MyTestCase('test_print3'))
if __name__ == '__main__':
    # 创建测试runner,执行测试用例集
    runner = TextTestRunner()
    runner.run(suite)
=========输出=============
setUpClass
第一个测试用例
tearDownClass

我们运行这段代码,只有第一个测试用例输出,因为我们只将第一个和第三个测试用例加入到测试集中,所有第二个测试用例不会执行,而我们在第三个测试用例前面机上了skip装饰器会跳过此测试用例,所有第三个也不会执行啦。

将待测试函数、测试用例、测试用例集分开


def add(x, y):
    return x + y
def sub(x, y):
    return x - y


from unittest import TestCase
from unittest import skip
from unittest import main as main_method
from add_sub import add, sub
class MyTestCase(TestCase):
    @classmethod
    def setUpClass(cls):
        print('setUpClass')
    @classmethod
    def tearDownClass(cls):
        print('tearDownClass')
    def test_print1(self):
        ret = 1 + 2
        result = add(1, 2)
        self.assertEqual(result, ret, 'test_print1测试失败')
    def test_print2(self):
        print('第二个测试用例')
    @skip('do not need test_print3')
    def test_print3(self):
        print('第三个测试用例')
if __name__ == '__main__':
    main_method()


from test import MyTestCase
from unittest import TestSuite, TextTestRunner
suite = TestSuite()
# 在测试用例集中添加测试用例
suite.addTest(MyTestCase('test_print1'))
suite.addTest(MyTestCase('test_print2'))
suite.addTest(MyTestCase('test_print3'))
if __name__ == '__main__':
    # 创建测试runner,执行测试用例集
    runner = TextTestRunner()
    runner.run(suite)
========输出=========
setUpClass
第一个测试用例
第二个测试用例
tearDownClass

参考: https://www.9xkd.com/user/plan-view.html?id=4822012440

推荐阅读:
  1. python中如何使用assert断言
  2. 如何在Python中使用unittest

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

unittest 使用 断言

上一篇:Spring源码剖析3:懒加载的单例Bean获取过程分析

下一篇:DataTable的增删改查

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》