python 单元测试 unittest

简介:

单元测试可以帮助我们准确迅速地定位出现问题的模块和单元。

单元测试的对象是函数,必须有输出结果(哪怕是异常输出),以便单元测试模块能够捕获返回值,并且与预期值进行比较,从而得出测试通过与否

单元测试的加载可以通过unittest.main()来启动单元测试的测试模块。

而testsuit里存放的就是单元测试的用例,下面分别列出了2种方法的使用。

  • setUp():             每个测试函数运行前运行
  • tearDown():        每个测试函数运行完后执行
  • setUpClass():      必须使用@classmethod 装饰器,所有test运行前运行一次
  • tearDownClass(): 必须使用@classmethod装饰器,所有test运行完后运行一次

:引入模块   import unittest 

例1:测试函数

复制代码
def sum(x, y):
    return x + y

def sub(x, y):
    return x - y
复制代码

单元测试模块

复制代码
class mytest(unittest.TestCase):   #所有执行测试的类都继承TestCase类
    #初始化工作
    def setUp(self):
        pass
    #清退工作
    def tearDown(self):
        pass
    #具体的测试用例,一定要以test开头
    def testsum_1(self):
        self.assertEqual(sum(1, 2), 3, "test sum fail")

    def testsum_2(self):
        self.assertEqual(sum(1, 2), 2, "test sum fail")

    def testsub(self):
        self.assertEqual(sub(2, 1), 1, "test sub fail")

if __name__ == "__main__":
    unittest.main()
复制代码

测试结果

1
2
3
4
5
6
7
8
9
10
11
12
13
..F
======================================================================
FAIL: testsum_ 2  (__main__.mytest)
----------------------------------------------------------------------
Traceback (most recent call last):
   File  "E:/task/��Ԫ����/test1.py" , line  18 , in testsum_ 2
     self.assertEqual(sum( 1 2 ),  2 "test sum fail" )
AssertionError: test sum fail
 
----------------------------------------------------------------------
Ran  3  tests in  0.003 s
 
FAILED (failures= 1 )

:F表示fail, F前的表示测试通过,有E的话表示程序自身异常

 

例2:测试类

复制代码
class myclass:
    def __init__(self):
        pass

    def sum(self, x, y):
        return x + y

    def sub(self, x, y):
        return x - y
复制代码

测试代码

复制代码
class mytest(unittest.TestCase):
    def setUp(self):
        self.tclass = myclass()

    def tearDown(self):
        pass

    def testsum_1(self):
        self.assertEqual(self.tclass.sum(1, 2), 3, "test sum fail")

    def testsum_2(self):
        self.assertEqual(self.tclass.sum(1, 2), 3, "test sum fail")

    def testsub(self):
        self.assertEqual(self.tclass.sub(2, 1), 1, "test sub fail")

if __name__ == "__main__":
    unittest.main()
复制代码

结果

1
2
3
4
5
6
7
8
9
10
11
12
13
..F
======================================================================
FAIL: testsum_ 2  (__main__.mytest)
----------------------------------------------------------------------
Traceback (most recent call last):
   File  "E:/task/��Ԫ����/test2.py" , line  24 , in testsum_ 2
     self.assertEqual(self.tclass.sum( 1 2 ),  5 "test sum fail" )
AssertionError: test sum fail
 
----------------------------------------------------------------------
Ran  3  tests in  0.001 s
 
FAILED (failures= 1 )

 

例3:构造测试集

被测代码

复制代码
class myclass:
    def __init__(self):
        pass

    def sum(self, x, y):
        return x + y

    def sub(self, x, y):
        return x - y
复制代码

测试代码

复制代码
class mytest(unittest.TestCase):
    def setUp(self):
        self.tclass = myclass()

    def tearDown(self):
        pass

    def testsum_1(self):
        self.assertEqual(self.tclass.sum(1, 2), 3, "test sum fail")

    def testsum_2(self):
        self.assertEqual(self.tclass.sum(1, 2), 5, "test sum fail")

    def testsub(self):
        self.assertEqual(self.tclass.sub(2, 1), 1, "test sub fail")

def suite():
    suite = unittest.TestSuite()
    suite.addTest(mytest("testsum_1"))
    suite.addTest(mytest("testsum_2"))
    suite.addTest(mytest("testsub"))
    return suite

if __name__ == "__main__":
    unittest.main(defaultTest = "suite")
复制代码

 








本文转自jihite博客园博客,原文链接:http://www.cnblogs.com/kaituorensheng/p/4447307.html,如需转载请自行联系原作者


相关文章
|
10月前
|
安全 关系型数据库 测试技术
学习Python Web开发的安全测试需要具备哪些知识?
学习Python Web开发的安全测试需要具备哪些知识?
197 61
|
10月前
|
安全 测试技术 网络安全
如何在Python Web开发中进行安全测试?
如何在Python Web开发中进行安全测试?
|
3月前
|
测试技术 Python
Python测试报告生成:整合错误截图,重复用例执行策略,调整测试顺序及多断言机制。
如何组织这一切呢?你可以写一本名为“Python测试之道”的动作指南手册,或者创建一个包含测试策略、测试顺序、多断言机制的脚本库。只要你的测试剧本编写得足够独到,你的框架就会像一位执行任务的超级英雄,将任何潜伏于代码深处的错误无情地揪出来展现在光天化日之下。这些整理好的测试结果,不仅有利于团队协作,更像冒险故事中的精彩篇章,带给读者无尽的探索乐趣和深刻的思考。
104 10
|
3月前
|
测试技术 Python
Python接口自动化测试中Mock服务的实施。
总结一下,Mock服务在接口自动化测试中的应用,可以让我们拥有更高的灵活度。而Python的 `unittest.mock`库为我们提供强大的支持。只要我们正确使用Mock服务,那么在任何情况下,无论是接口是否可用,都可以进行准确有效的测试。这样,就大大提高了自动化测试的稳定性和可靠性。
140 0
|
6月前
|
机器学习/深度学习 设计模式 测试技术
Python 高级编程与实战:构建自动化测试框架
本文深入探讨了Python中的自动化测试框架,包括unittest、pytest和nose2,并通过实战项目帮助读者掌握这些技术。文中详细介绍了各框架的基本用法和示例代码,助力开发者快速验证代码正确性,减少手动测试工作量。学习资源推荐包括Python官方文档及Real Python等网站。
|
6月前
|
存储 JSON API
Python测试淘宝店铺所有商品接口的详细指南
本文详细介绍如何使用Python测试淘宝店铺商品接口,涵盖环境搭建、API接入、签名生成、请求发送、数据解析与存储、异常处理等步骤。通过具体代码示例,帮助开发者轻松获取和分析淘宝店铺商品数据,适用于电商运营、市场分析等场景。遵守法规、注意调用频率限制及数据安全,确保应用的稳定性和合法性。
|
10月前
|
监控 安全 测试技术
如何在实际项目中应用Python Web开发的安全测试知识?
如何在实际项目中应用Python Web开发的安全测试知识?
175 61
|
9月前
|
IDE 测试技术 开发工具
10个必备Python调试技巧:从pdb到单元测试的开发效率提升指南
在Python开发中,调试是提升效率的关键技能。本文总结了10个实用的调试方法,涵盖内置调试器pdb、breakpoint()函数、断言机制、logging模块、列表推导式优化、IPython调试、警告机制、IDE调试工具、inspect模块和单元测试框架的应用。通过这些技巧,开发者可以更高效地定位和解决问题,提高代码质量。
946 8
10个必备Python调试技巧:从pdb到单元测试的开发效率提升指南
|
10月前
|
Java 测试技术 持续交付
【入门思路】基于Python+Unittest+Appium+Excel+BeautifulReport的App/移动端UI自动化测试框架搭建思路
本文重点讲解如何搭建App自动化测试框架的思路,而非完整源码。主要内容包括实现目的、框架设计、环境依赖和框架的主要组成部分。适用于初学者,旨在帮助其快速掌握App自动化测试的基本技能。文中详细介绍了从需求分析到技术栈选择,再到具体模块的封装与实现,包括登录、截图、日志、测试报告和邮件服务等。同时提供了运行效果的展示,便于理解和实践。
564 4
【入门思路】基于Python+Unittest+Appium+Excel+BeautifulReport的App/移动端UI自动化测试框架搭建思路
|
9月前
|
敏捷开发 测试技术 持续交付
自动化测试之美:从零开始搭建你的Python测试框架
在软件开发的马拉松赛道上,自动化测试是那个能让你保持节奏、避免跌宕起伏的神奇小助手。本文将带你走进自动化测试的世界,用Python这把钥匙,解锁高效、可靠的测试框架之门。你将学会如何步步为营,构建属于自己的测试庇护所,让代码质量成为晨跑时清新的空气,而不是雾霾中的忧虑。让我们一起摆脱手动测试的繁琐枷锁,拥抱自动化带来的自由吧!

热门文章

最新文章

推荐镜像

更多