单元测试:unittest.TestCase
admin
2023-07-23 18:42:17
0

a.测试驱动开发:(TDD:Test-Driven Development)

b.单元测试是用来对一个模块、一个函数或者一个类来进行正确性检验的测试工作。

c.以test开头的方法就是测试方法

d.模块函数:

    检查预期结果:assertEqual()

    验证条件:assertTrue()或 assertFalse()

    验证是否引发了特定异常:assertRaises()

    在每个测试方法之前和之后执行的指令:setUp()和tearDown()

    为测试脚本提供命令行界面: unittest.main()


mydict.py:

#!/usr/bin/python
# -*- coding: utf-8 -*-

class Dict(dict):

    def __init__(self, **kw):
        super().__init__(**kw)

    def __getattr__(self, key):
        try:
            return self[key]
        except KeyError:
            raise AttributeError(r"'Dict' object has no attribute '%s'" % key)

    def __setattr__(self, key, value):
        self[key] = value



 mydict_test.py:

#!/usr/bin/python
# -*- coding: utf-8 -*-

import unittest

from mydict import Dict

class TestDict(unittest.TestCase):

    def setUp(self):
        print('setUp...')

    def tearDown(self):
        print('tearDown...')

    def test_init(self):
        d = Dict(a=1, b='test')
        self.assertEqual(d.a, 1)
        self.assertEqual(d.b, 'test')
        self.assertTrue(isinstance(d, dict))
   
    def test_key(self):
        d = Dict()
        d['key'] = 'value'
        self.assertEqual(d.key, 'value')

    def test_attr(self):
        d = Dict()
        d.key = 'value'
        self.assertTrue('key' in d)
        self.assertEqual(d['key'], 'value')

    def test_keyerror(self):
        d = Dict()
        with self.assertRaises(KeyError):
            value = d['empty']

    def test_attrerror(self):
        d = Dict()
        with self.assertRaises(AttributeError):
            value = d.empty




运行单元测试  

一旦编写好单元测试,我们就可以运行单元测试。最简单的运行方式是在mydict_test.py的最后加上两行代码:

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

这样就可以把mydict_test.py当做正常的python脚本运行:

$ python mydict_test.py

另一种方法是在命令行通过参数-m unittest直接运行单元测试:

$ python -m unittest mydict_test
.....
----------------------------------------------------------------------Ran 5 tests in 0.000sOK




相关内容

热门资讯

养路费谁来交,油电车主大吵 新华社记者 李任滋 摄一项消失17年的收费,近来重回公共视野。围绕 “新能源车该不该交养路费”的话题...
王毅同巴基斯坦副总理兼外长达尔... 新华社北京6月16日电 中共中央政治局委员、外交部长王毅16日晚同巴基斯坦副总理兼外长达尔通电话。达...
立陶宛叫停与台当局合作,另一“... 立陶宛近日正式踩下“刹车”,叫停了与台当局的所谓经济合作谈判。与此同时,该国总理宣布辞职,内阁面临重...
总书记德州考察重要讲话激励干部... 原标题:家园越建越美 日子越过越好——习近平总书记在山东德州考察时的重要讲话激励广大干部群众真抓实干...
艺人“痛失艺名”,能否纠正行业... 记者 言咏腾讯视频6月24日在上海电视节期间举办年度发布会,其对外发布的参会嘉宾名单中,统一使用“本...
委内瑞拉接连强震,美机构:遇难... 据央视新闻,当地时间24日傍晚,委内瑞拉连续发生两次7级以上地震,首都加拉加斯震感强烈。强震发生后,...
于北辰“210%拦截率”变大陆... 桃园市议员于北辰过去曾在政论节目上表示,台军防空导弹(如天弓导弹)防空导弹平均每发拦截率70%计算,...
委内瑞拉遭遇百年强震,特朗普发... 当地时间6月24日晚,委内瑞拉接连发生两次7级以上强烈地震,形势不容乐观。美国总统特朗普表示,美国随...
北约秘书长到访白宫造新词“特万... 当地时间6月24日,北约秘书长马克·吕特近日到访白宫,与美国总统唐纳德·特朗普举行会晤。在伊朗局势等...
北京:第四届链博会首设人工智能... 本文转自【人民网-图片频道】; 2026年6月23日,北京,在第四届中国国际供应链促进博览会数智科...