python 测试驱动开发的简单例子

简介: 一、需求分析需求:一个类 MyClass,有两个功能:add, sub1.先功能设计# myclass.pyclass MyClass(object): # 加法 def add(self): pass # 减法 def sub(self): pass 2.

一、需求分析

需求:一个类 MyClass,有两个功能:add, sub

1.先功能设计

# myclass.py

class MyClass(object):
    # 加法
    def add(self): 
        pass
        
    # 减法
    def sub(self): 
        pass
        

2.再功能测试

import unittest
from myclass import MyClass

class mytest(unittest.TestCase): 
    # 初始化
    def setUp(self): 
        self.mc = MyClass()
        
    # 退出清理
    def tearDown(self): 
        pass
        
    # 测试加法
    def test_add(self): 
        self.assertEqual(3, self.mc.add(1, 2))
        
    # 测试减法
    def test_sub(self): 
        self.assertEqual(1, self.mc.sub(2, 1))
        
        
if __name__ =='__main__': 
    unittest.main()

3.再功能实现

# myclass.py

class MyClass(object):
    def __init__(self):
        super().__init__()
        
    def add(self, x, y): 
        return x + y
        
    def sub(self, x, y): 
        return x-y
        

4.进行测试

$ python myclass_test.py

OK,现在可以向客户交货了。

老板发话,大家幸苦了,明天放假休息一天。

一切都很美好!

二、需求有变

等等,客户半夜给老板打电话,说有些东西要变一下。

说好的休一天假泡汤了

客户说,1+1=2没有问题,但如果是'1'+'1'='11'是不允许的

这尼玛什么变态的需求啊!好吧,客户是上帝

1.修改功能测试

import unittest
from myclass import MyClass

class mytest(unittest.TestCase): 
    # 初始化
    def setUp(self): 
        self.mc = MyClass()
        
    # 退出清理
    def tearDown(self): 
        pass
        
    # 测试加法
    def test_add(self): 
        self.assertEqual(3, self.mc.add(1, 2))
        self.assertRaises(ValueError, self.mc.add, '1', '2') # 两个数都不是数字,则需要报错
        
    # 测试减法
    def test_sub(self): 
        self.assertEqual(1, self.mc.sub(2, 1))
        
        
if __name__ =='__main__': 
    unittest.main()

2.修改功能实现

# myclass.py

class MyClass(object):
    def __init__(self):
        super().__init__()
        
    def add(self, x, y): 
        #return x + y
        number_types = (int, float, complex)
        if isinstance(x, number_types) and isinstance(y, number_types):
            return x + y
        else:
            raise ValueError
        
    def sub(self, x, y): 
        return x-y
        

3.进行测试

$ python myclass_test.py

好了,交货!

求求您千万别再提什么别的变态的需求了。

目录
相关文章
|
4月前
|
数据采集 数据可视化 API
驱动业务决策:基于Python的App用户行为分析与可视化方案
驱动业务决策:基于Python的App用户行为分析与可视化方案
|
9月前
|
调度 数据库 Python
【YashanDB 知识库】DolphinScheduler 适配崖山 Python 驱动
本文来自YashanDB官网,介绍如何将DolphinScheduler调度器适配崖山Python驱动,实现通过Python任务访问崖山数据库。环境要求包括DolphinScheduler 3.1.9、Python 3.9及YashanDB 23.2.2.100。操作步骤涵盖安装YashanDB客户端、配置环境变量、安装Python驱动以及设置DolphinScheduler相关参数,助力用户高效集成与使用。
|
9月前
|
数据库 Python
【YashanDB知识库】python驱动查询gbk字符集崖山数据库CLOB字段,数据被驱动截断
【YashanDB知识库】python驱动查询gbk字符集崖山数据库CLOB字段,数据被驱动截断
|
机器学习/深度学习 数据挖掘 TensorFlow
解锁Python数据分析新技能,TensorFlow&PyTorch双引擎驱动深度学习实战盛宴
【7月更文挑战第31天】在数据驱动时代,Python凭借其简洁性与强大的库支持,成为数据分析与机器学习的首选语言。**数据分析基础**从Pandas和NumPy开始,Pandas简化了数据处理和清洗,NumPy支持高效的数学运算。例如,加载并清洗CSV数据、计算总销售额等。
215 2
|
机器学习/深度学习 数据挖掘 TensorFlow
解锁Python数据分析新技能,TensorFlow&PyTorch双引擎驱动深度学习实战盛宴
在数据驱动时代,Python凭借简洁的语法和强大的库支持,成为数据分析与机器学习的首选语言。Pandas和NumPy是Python数据分析的基础,前者提供高效的数据处理工具,后者则支持科学计算。TensorFlow与PyTorch作为深度学习领域的两大框架,助力数据科学家构建复杂神经网络,挖掘数据深层价值。通过Python打下的坚实基础,结合TensorFlow和PyTorch的强大功能,我们能在数据科学领域探索无限可能,解决复杂问题并推动科研进步。
237 0
|
数据挖掘 数据处理 决策智能
Python 数据分析工具箱:深挖 Pandas 与 NumPy 高级功能,驱动智能决策
【7月更文挑战第12天】Python的Pandas和NumPy是数据分析的基石。Pandas提供灵活的数据结构如DataFrame,用于高效处理关系型数据,而NumPy则以多维数组和科学计算功能著称。两者结合,支持数据合并(如`pd.merge`)、时间序列分析(`pd.to_datetime`)和高级数组运算。通过掌握它们的高级特性,能提升数据分析效率,应用于各领域,如金融风险评估、市场分析和医疗预测,助力数据驱动的决策。学习和熟练运用Pandas与NumPy是成为出色数据分析师的关键。
178 0
|
Web App开发 人工智能 Java
Python Selenium实现自动化测试及Chrome驱动使用
Python Selenium实现自动化测试及Chrome驱动使用
486 2
|
Web App开发 测试技术 Python
【如何学习python自动化测试】—— 浏览器驱动的安装 以及 如何更新driver
【如何学习python自动化测试】—— 浏览器驱动的安装 以及 如何更新driver
414 0
|
自然语言处理 机器人 测试技术
常见python数据驱动框架
常见python数据驱动框架
153 1
|
SQL Java 关系型数据库
在Python中编写Java数据库驱动是不可能的
在Python中编写Java数据库驱动是不可能的

推荐镜像

更多