• bdd框架之lettuce


    1)TDD:测试驱动开发(Test-Driven Development)
    测试驱动开发是敏捷开发中的一项核心实践和技术,也是一种设计方法论。TDD的原理是在开发功能代码之前,先编写单元测试用例代码,测试代码确定需要编写什么产品代码。TDD的基本思路就是通过测试来推动整个开发的进行,但测试驱动开发并不只是单纯的测试工作,而是把需求分析、设计和质量控制量化的过程。TDD首先考虑使用需求(对象、功能、过程、接口等),主要是编写测试用例框架对功能的过程和接口进行设计,而测试框架可以持续进行验证。
    2)ATDD:验收测试驱动开发(Acceptance Test Driven Development)
    验收测试驱动开发是一种实践。在准备实施一个功能或特性之前,团队首先需要定义出期望的质量标准和验收细则,以明确且达成共识的验收测试计划(包含一系列测试场景)来驱动开发人员的功能开发实现和测试人员的测试脚本开发。面向开发人员,强调如何实现系统以及如何通过验收测试。
    3)BDD:行为驱动开发(Behavior Driven Development)
    行为驱动开发是一种敏捷软件开发技术,它鼓励软件项目中的开发者、QA、非技术人员或商业参与者之间的协作。主要是从用户的需求出发,强调系统行为。BDD最初由Dan North在2003年命名,它包括验收测试和客户测试驱动等极限编程的实践,作为对测试驱动开发的回应。
    1、
    import lettuce import*
    ①引入Lettuce下面的所有类和方法。
    @step('I have the number(d+)')
    def have_the_number(step,number):
    world.number = int(number)
    @step是Python装饰器的写法,也就是have_the_number()函数由@step()进行装饰。
    I have the number(d+)对应于zero.feature文件中的第六句:“Given I have the number 0"
    (d+)是一个正则表达式,d表示匹配一个数字,+表示匹配的数字至少有一个或多个。关于Python的正则表达式,读者可以自行查阅相关资料。

    ②定义一个have_the_number函数,把@step(I have the number(d+))匹配到的数字0作为函数的入参,然后将其转换成整型(int)赋值给world.number变量。
    @step('I compute its factorial')
    def compute_its_fatorial(step):
    world.number = factorial(world.number)

    ③把have_the_number()函数中world.number的变量值0作为factorial()函数的入参,并把factorial()函数的返回值赋值给变量world.number。
    I compute its factorial 对应于zero.feature文件中的第七句:“When I compute its factorial。”
    def factorial(number):
    number = int(number)
    if(number == 0)or(number == 1):
    return 1
    else:
    return number

    ④计算整数的阶乘,在第二步中调用此函数。判断参数如果等于0或1的话就直接返回1,否则返回具体的数。该函数在have_the_number)中被调用。
    @step('I see the number(d+)')
    def check_number(step,expected):
    expected = int(expected)
    assert world.number == expected,"Got %d" % world.number
    expected获取zero.feature文件中的预期结果,与第三步返回的实际结果world.number进行对比;通过assert函数进行断言结果是否正确。
    I see the number(d+)对应于zero.feature文件中的第八句:“Then I see the number1。”
    from lettuce import *
    @step("I have the number (d+)")
    def have_the_number(step,number):
    world.number = int(number)

    @step("I compute its factorial")
    def compute_its_fatorial(step):
    world.number = factorial(world.number)

    @step("I see the number (d+)")
    def check_number(step,expected):
    expected = int(expected)
    assert world.number == expected,"Got %d" % world.number

    def factorial(number):
    number = int(number)
    if (number == 0) or (number == 1):
    return 1
    else:
    return number
  • 相关阅读:
    C# 协变 逆变
    go slice 理解
    为什么避免使用Task.Wait或者Task.Result
    IL笔记
    docker随笔
    领域事件
    总结笔记
    基于ASP.NET Core 3.x的端点路由(Endpoint Routing)实现控制器(Controller)和操作(Action)分离的接口服务
    CentOS7 多IP搭建SOCKS5代理服务器
    Springboot 实现数据库备份还原
  • 原文地址:https://www.cnblogs.com/zhang-da/p/12210475.html
Copyright © 2020-2023  润新知