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

一、需求分析

需求:一个类 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

好了,交货!

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

转载于:https://www.cnblogs.com/hhh5460/p/5858619.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Cucumber 是一个行为驱动开发(BDD)的自动化测试框架,它支持多种编程语言,包括 Python。在 Python 中,可以使用 behave 库来实现 Cucumber 测试框架。 behave 库提供了类似 Cucumber 的语法和结构来编写测试用例。它使用 Gherkin 语言编写特定的测试用例,并将其转换为 Python 代码。Gherkin 语言是一种简单的自然语言,用于描述测试场景和步骤。 以下是一个简单例子: ``` Feature: Addition In order to avoid silly mistakes As a math idiot I want to be told the sum of two numbers Scenario: Add two numbers Given I have entered 50 into the calculator And I have entered 70 into the calculator When I press add Then the result should be 120 on the screen ``` 上面的例子描述了一个加法测试场景,包括输入两个数字并计算它们的和。接下来,我们可以将这个测试场景转换为 Python 代码: ``` from behave import given, when, then @given('I have entered {num1:d} into the calculator') def step_impl(context, num1): context.num1 = num1 @given('I have entered {num2:d} into the calculator') def step_impl(context, num2): context.num2 = num2 @when('I press add') def step_impl(context): context.result = context.num1 + context.num2 @then('the result should be {result:d} on the screen') def step_impl(context, result): assert context.result == result ``` 上面的代码使用了 behave 库提供的装饰器来定义测试步骤,这些步骤与 Gherkin 语法中的步骤相对应。当运行测试用例时,behave 库将按照步骤的顺序执行这些函数,并检查它们是否通过了断言。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值