文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Python中的Unittest基本使用

2024-04-02 19:55

关注

前言:

Unittest又名单元测试,主要用于测试自己写的代码的正确性和完备性,也方便自己和他人对代码的维护。在软件开发过程中,测试驱动开发的理念是一种好的开发习惯。

例如现在我们写了一个求绝对值的函数my_abs,存放在myAbs.py中

def my_abs(number):
    if not (isinstance(number, int) or isinstance(number, float)):
        raise ValueError("invalid value %s" % number)
    else:
        if(number >= 0):
            return number
        else:
            return -number

此处的my_abs函数对参数做了检查,参数必须是一个数(python的数只有int和float型)。那么如果想要测试这个函数的正确性,我们需要写一个测试函数,用于测试函数的各个分支情况。

基于unittest的的测试代码如下:

import unittest
 
from myAbs import my_abs
class TestmyAbs(unittest.TestCase):
    def test_positive(self):
        self.assertEqual(my_abs(1), 1)
 
    def test_zero(self):
        self.assertEqual(my_abs(0), 0)
 
    def test_negative(self):
        self.assertEqual(my_abs(-1), 1)
 
    def test_inputerror(self):
        with self.assertRaises(ValueError):
            my_abs("1")
 
if __name__ == "__main__":
    unittest.main()

上述代码存放在test_myAbs.py中。

unittest的基本使用方法是:

在上面测试代码的TestMyabs类的方法中,分别对正数,零和负数的情况进行了测试,使用assertEqual进行结果的判定;另外测试中还对输入参数是无效的情况进行了判定,使用了with语句和assertRaises的方式,针对期望抛出来的异常进行判定

unittest的运行方式:

1. 单独运行test_myAbs.py文件,前提是在文件尾增加

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

2. 发送命令 python -m unittest .\myAbs.py

   当发送命令python -m unittest时,会执行当前目录下所有test_开头的文件

运行结果如下:

Testing started at 4:43 PM ...
Launching pytest with arguments C:/work/myPythonPrj/test_myAbs.py --no-header --no-summary -q in C:\work\myPythonPrj
 
============================= test session starts =============================
collecting ... collected 4 items
 
test_myAbs.py::TestmyAbs::test_inputerror PASSED                         [ 25%]
test_myAbs.py::TestmyAbs::test_negative PASSED                           [ 50%]
test_myAbs.py::TestmyAbs::test_positive PASSED                           [ 75%]
test_myAbs.py::TestmyAbs::test_zero PASSED                               [100%]
 
============================== 4 passed in 0.03s ==============================
 
Process finished with exit code 0

到此这篇关于Python中的Unittest基本使用的文章就介绍到这了,更多相关Python Unittest 内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯