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


相关文章
|
2天前
|
SQL 测试技术 网络安全
Python之SQLMap:自动SQL注入和渗透测试工具示例详解
Python之SQLMap:自动SQL注入和渗透测试工具示例详解
11 0
|
2天前
|
测试技术 开发者 Python
Python中的单元测试
【5月更文挑战第8天】在Python软件开发中,确保代码质量是关键,单元测试和测试驱动开发(TDD)是实现这一目标的有效方法。本文介绍了如何使用unittest和pytest进行单元测试,以及如何通过TDD编写可靠代码。首先,展示了单元测试的基本概念和示例,然后详细解释了TDD的"红-绿-重构"循环。此外,还讨论了pytest如何简化单元测试,并给出了使用TDD重构函数的例子。
6 1
|
7天前
|
监控 测试技术 持续交付
Python自动化测试代理程序可用性
总之,通过编写测试用例、自动化测试和设置监控系统,您可以确保Python自动化测试代理程序的可用性,并及时发现和解决问题。这有助于提供更可靠和高性能的代理服务。
12 4
|
10天前
|
机器学习/深度学习 算法 UED
【Python 机器学习专栏】A/B 测试在机器学习项目中的应用
【4月更文挑战第30天】A/B测试在数据驱动的机器学习项目中扮演关键角色,用于评估模型性能、算法改进和特征选择。通过定义目标、划分群组、实施处理、收集数据和分析结果,A/B测试能帮助优化模型和用户体验。Python提供工具如pandas和scipy.stats支持实验实施与分析。注意样本量、随机性、时间因素和多变量分析,确保测试有效性。A/B测试助力于持续改进机器学习项目,实现更好的成果。
|
11天前
|
测试技术 Python
python运行集成测试
【4月更文挑战第22天】
10 1
|
11天前
|
测试技术 Python
python编写集成测试
【4月更文挑战第22天】
4 1
|
12天前
|
数据可视化 测试技术 持续交付
python分析测试结果
【4月更文挑战第21天】
20 3
|
12天前
|
XML 测试技术 持续交付
python运行集成测试
【4月更文挑战第21天】
21 2
|
12天前
|
测试技术 Python
python编写集成测试用例
【4月更文挑战第21天】
20 1
|
19天前
|
网络协议 安全 测试技术
性能工具之emqtt-bench BenchMark 测试示例
【4月更文挑战第19天】在前面两篇文章中介绍了emqtt-bench工具和MQTT的入门压测,本文示例 emqtt_bench 对 MQTT Broker 做 Beachmark 测试,让大家对 MQTT消息中间 BenchMark 测试有个整体了解,方便平常在压测工作查阅。
113 7
性能工具之emqtt-bench BenchMark 测试示例