【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)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,928评论 6 509
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,748评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 166,282评论 0 357
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,065评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,101评论 6 395
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,855评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,521评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,414评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,931评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,053评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,191评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,873评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,529评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,074评论 0 23
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,188评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,491评论 3 375
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,173评论 2 357

推荐阅读更多精彩内容

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