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,如需转载请自行联系原作者


相关文章
|
8天前
|
安全 关系型数据库 测试技术
学习Python Web开发的安全测试需要具备哪些知识?
学习Python Web开发的安全测试需要具备哪些知识?
23 4
|
2月前
|
Web App开发 前端开发 JavaScript
探索Python科学计算的边界:利用Selenium进行Web应用性能测试与优化
【10月更文挑战第6天】随着互联网技术的发展,Web应用程序已经成为人们日常生活和工作中不可或缺的一部分。这些应用不仅需要提供丰富的功能,还必须具备良好的性能表现以保证用户体验。性能测试是确保Web应用能够快速响应用户请求并处理大量并发访问的关键步骤之一。本文将探讨如何使用Python结合Selenium来进行Web应用的性能测试,并通过实际代码示例展示如何识别瓶颈及优化应用。
124 5
|
2月前
|
测试技术 持续交付 Apache
Python性能测试新风尚:JMeter遇上Locust,性能分析不再难🧐
【10月更文挑战第1天】Python性能测试新风尚:JMeter遇上Locust,性能分析不再难🧐
144 3
|
18天前
|
Java 测试技术 持续交付
【入门思路】基于Python+Unittest+Appium+Excel+BeautifulReport的App/移动端UI自动化测试框架搭建思路
本文重点讲解如何搭建App自动化测试框架的思路,而非完整源码。主要内容包括实现目的、框架设计、环境依赖和框架的主要组成部分。适用于初学者,旨在帮助其快速掌握App自动化测试的基本技能。文中详细介绍了从需求分析到技术栈选择,再到具体模块的封装与实现,包括登录、截图、日志、测试报告和邮件服务等。同时提供了运行效果的展示,便于理解和实践。
63 4
【入门思路】基于Python+Unittest+Appium+Excel+BeautifulReport的App/移动端UI自动化测试框架搭建思路
|
21天前
|
测试技术 持续交付 Apache
Python性能测试新风尚:JMeter遇上Locust,性能分析不再难🧐
Python性能测试新风尚:JMeter遇上Locust,性能分析不再难🧐
45 3
|
20天前
|
缓存 测试技术 Apache
告别卡顿!Python性能测试实战教程,JMeter&Locust带你秒懂性能优化💡
告别卡顿!Python性能测试实战教程,JMeter&Locust带你秒懂性能优化💡
36 1
|
2月前
|
测试技术 Python
自动化测试项目学习笔记(一):unittest简单运行(初始化,清除,设置测试行为)
本文介绍了Python的unittest框架的基础用法,包括测试初始化(setup)、清除(tearDown)函数的使用,以及assertEqual和assertGreaterEqual等断言方法,并展示了如何创建测试用例,强调了测试函数需以test_开头才能被运行。
64 1
自动化测试项目学习笔记(一):unittest简单运行(初始化,清除,设置测试行为)
|
19天前
|
Web App开发 测试技术 数据安全/隐私保护
自动化测试的魔法:使用Python进行Web应用测试
【10月更文挑战第32天】本文将带你走进自动化测试的世界,通过Python和Selenium库的力量,展示如何轻松对Web应用进行自动化测试。我们将一起探索编写简单而强大的测试脚本的秘诀,并理解如何利用这些脚本来确保我们的软件质量。无论你是测试新手还是希望提升自动化测试技能的开发者,这篇文章都将为你打开一扇门,让你看到自动化测试不仅可行,而且充满乐趣。
|
2月前
|
测试技术 Python
自动化测试项目学习笔记(三):Unittest加载测试用例的四种方法
本文介绍了使用Python的unittest框架来加载测试用例的四种方法,包括通过测试用例类、模块、路径和逐条加载测试用例。
66 0
自动化测试项目学习笔记(三):Unittest加载测试用例的四种方法
|
2月前
|
缓存 测试技术 Apache
告别卡顿!Python性能测试实战教程,JMeter&Locust带你秒懂性能优化💡
【10月更文挑战第1天】告别卡顿!Python性能测试实战教程,JMeter&Locust带你秒懂性能优化💡
64 4
下一篇
无影云桌面