【python学习】9.unintest框架

单元测试

单元测试是开发者编写的一小段代码,用于检验被测代码的一个很小的很明确的功能是否正确。通常而言,一个单元测试是用于判断某个特定条件或场景下某个特定函数的行为
单元测试需要注意:要清楚对程序块所预期的输入和输入,根据预期和程序逻辑写case。预期结果要针对需求设计的逻辑去写,而不是针对程序的实现去屑。

单元测试覆盖类型
语句覆盖、条件覆盖、判断覆盖、路径覆盖

Unittest 框架

unittest文档
unittest编写与规范
Unittest提供了test case 、test suites、test fixtures 、test runner相关的组件
编写规范
测试模块首先 import unnittest
测试类必须继承 unittest.TestCase
测试方法必须以“test_"开头
类名单词首字母大写
测试框架结构
setUp用来准备环境,tearDown用来清理环境
如果想要在所有case执行之前准备一次环境,并在所有case执行结束之后再清理环境,我们可以用setUpClass()与tearDownClass()
如果想有些方法不在本次执行中使用 @unittest.skip

import unittest


class TestStringMethod(unittest.TestCase):
    def upper(self):
        self.assertEqual('foo'.upper(), 'FOO')

    # setup,teardown,在方法前后调用,setupclass,teardownclass 在类执行前后调用
    def setUpclass(cls) -> None:
        print('setup')

    def tearDownclass(cls) -> None:
        print('teardown')

    def test_upper(self):
        self.assertTrue("FOO".isupper())
        self.assertFalse("Foo".isupper())
        print('test Upper')

    def test_abc(self):
        print('abc')


class Search:

    def search_fun(self):
        print('search')
        return True


class TestSearch(unittest.TestCase):

    def test_search(self):
        print('testsearch1')
        search = Search()
        assert True == search.search_fun()


if __name__ == '__main__':
    unittest.main()

unitest 断言

# unittest 断言
import unittest


class TestUnittestAssert(unittest.TestCase):

    def test_equal(self):
        print('断言相等')
        self.assertEqual(1, 1, '判断 1==1')

    def test_equal2(self):
        print('判断不相等')
        self.assertNotEqual(1, 2, '判断1!=2')

    def test_equal3(self):
        print('判断是否为TRUE')
        self.assertTrue(1==1, '结果为TRUE')

    def test_equal4(self):
        print('判断是否为FALSE')
        self.assertFalse(1==2, '结果为False')

UNITTEST执行测试用力
执行方法1:unittest.main()
执行方法2:从容器中执行
suite = unittest.TestSuite()
suite.addTest(TestMethod('test01')
suite.addTest(TestMethod('test02')
unittest.TextTestRunner().run(suite)

if __name__ == '__main__':
    # 执行所有
    unittest.main()
    # 执行制定测试用例
    suite = unittest.TestSuite()
    suite.addTest(TestUnittestAssert('test_equal'))
    suite.addTest(TestUnittestAssert('test_equal2'))
    unittest.TextTestRunner.run(suite)

    # 执行某个测试类
    suite1 = unittest.defaultTestLoader.loadTestsFromTestCase(TestUnittestAssert)
    suite2 = unittest.TestSuite([suite1])
    unittest.TextTestRunner(verbosity=2).run(suite2)
# 执行 某个文件下的
    test_dir = './'
    discover = unittest.defaultTestLoader.discover(test_dir , pattern = "cho721 * .py")
    unittest.TextTestRunner(verbosity=2).run(discover)

htmltestruuner测试报告
GITHUB地址 htmltestruuner

if __name__ == '__main__':
    report_title = '用例执行报告-标题'
    desc = '用于展示修改样式后的HTMLTestRunner'
    report_file = './测试报告.html'
    test_dir = './'
    discover = unittest.defaultTestLoader.discover(test_dir, pattern="cho721_3.py")
    with open(report_file, 'wb') as report:
        runner = HTMLTestRunner(stream=report, title=report_title, description=desc)
        runner.run(discover)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 单元测试概述 什么是单元测试(白盒测试)?单元测试是开发者编写的一小段代码,用于检验被测代的一个很小的、很明确的功...
    InsaneLoafer阅读 4,258评论 0 7
  • 前言:此代码,网上实例+同事提供思路+自己编码,100%手工完成,希望能认识更多的同道中人,一起探讨。 已下是简单...
    hao0_0阅读 21,131评论 4 14
  • Python unittest 学习 [[toc]] 前言 由于目前项目需要做接口测试,故特意去学习了Python...
    Alex_6c08阅读 4,702评论 0 1
  • 一、Python介绍Python 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。Python 的...
    ad458edb873e阅读 2,669评论 0 0
  • 16宿命:用概率思维提高你的胜算 以前的我是风险厌恶者,不喜欢去冒险,但是人生放弃了冒险,也就放弃了无数的可能。 ...
    yichen大刀阅读 11,275评论 0 4