Lettuce简介(一)

( 这算是我学习Lettuce的笔记吧,希望能给大家点帮助,如果有错还请修正,谢谢了)

1、BDD

      Behaviour-driven development,直译过来就是行为驱动开发,是一种敏捷开发技术,敏捷的好处不用多说,我们先看看BDD的基本操作模式吧:

a首先,描述问题

b然后,编写脚本

c发现错误

d修改代码

e最后,解决问题

 

深刻理解敏捷、理解BDD,需要非常深刻的认识到“可理解性”的重要。从软件开发的角度来说,就是“代码的可理解性”是重中之重的问题。

在ThoughtWorks,它是排在四大原则之首的。推而广之,BDD用自然语言描述用例,便是把用例的可理解性发挥到了极致。

 

这种开发思想使我们可以花更多的时间去分解和剖析问题,而且这种开发模式也能让代码能够得到更大程度的重用

 

2、Lettuce

       目前,支持BDD的框架有很多,以Cucumber(黄瓜)最有代表性(Ruby实现),它有个Python实现的版本叫lettuce(生菜)

它的实现思路是:(以lettuce为例)

a、用文本描述用例(Given When Then,也就是:在…预置条件下,当执行…操作时,会有…结果)。(写在 xxx.feature 文件中)

b、用脚本解析文本用例,调用被测对象的接口,进行自动化测试。(用python实现,写在 steps.py 中)

结合BDD的思想,lettuce的工作流程如下图:

3、Lettuce安装(windows)

a、在安装lettuce首先安装python,这里我使用的是python27版本

下载路径:http://www.python.org/getit/,双击默认安装就可以,

安装完成之后配置环境变量path,由于我是默认安装在C盘,所以我的环境变量为:C:\Python27;C:\Python27\Scripts;大家可以根据具体情况变化,建议大家最好是配置用户的环境变量  

b、因为我是windows用户,那么我需要下载一个setuptools用来支持lettuce的运行,具体资料可以参考http://www.erlisvidal.com/blog/2010/10/how-install-lettuce-windows,需要注意下载对应的setuptools版本,因为我使用的是python27,系统环境是windows,那么我们需要下载setuptools-0.6c11.win32-py2.7.exe,双击,默认安装,

(这个时候在Python27\Lib\site-packages路径下会多出一个setuptools的文件夹)

       c、这个时候你可以安装lettuce了,下载路径https://github.com/gabrielfalcao/lettuce,解压时注意目录中不要有中文以及空格,解压完成之后,到dos命令下,找到解压过后文件的存放路径,输入python setup.py install 之后就会自动安装,

安装完成之后同样在Python27\Lib\site-packages路径下会多出一个lettuce文件夹

       d、在dos命令下,输入lettuce按回车键之后会出现下面的现象,

恭喜你,你的lettuce已经安装完成了,但是你会发现这里有很多奇怪的字符,lettuce在Unix或者Mac上运行是有颜色的输出的,这使结果会变得非常直观,但是在windows下是不支持的,那么如何修改呢,python中有一个插件是可以使我们支持颜色输出的,首先你需要去

http://pypi.python.org/pypi/colorama 去下载colorama,解压完成之后同lettuce安装过程一样,到dos命令下,找到解压过后文件的存放路径,输入python setup.py install 之后就会自动安装,安装完成之后还需要在

C:\Python26\Lib\site-packages\lettuce-0.1.15-py2.6.egg\lettuce\__init__.py 的 import语句最后面添加两行:

from colorama import init

init()

修改完成之后,再回到dos命令下,输入lettuce按回车,之后就会出现漂亮的颜色输出了

4、Lettuce安装补充(支持中文)

       这个时候大家都会发现,lettuce是不支持中文的,用英文来描述事件也是可以的,但是我还是更希望能够支持中文,在http://lettuce.it/网站上有提到language support,从这个上面就可以看到,我们只需要找到C:\Python27\Lib\site-packages\lettuce-0.1.33-py2.7.egg\lettuce下的language.py文件在最下面添加:

'zh-CN': {

        'examples': u'例如|场景',

        'feature': u'特性',

        'name': u'Simplified Chinese',

        'native': u'简体中文',

        'scenario': u'场景',

        'scenario_outline': u'场景描述',

        'scenario_separator': u'(场景描述|场景)',

    },

      'zh-TW': {

        'examples': u'例如|場景',

        'feature': u'特性|功能',

        'name': u'Traditional Chinese',

        'native': u'繁體中文',

        'scenario': u'場景',

        'scenario_outline': u'場景描述',

        'scenario_separator': u'(場景描述|場景)',

},

当然你可以不写成这样,还可以添加更多的语言支持,上面的是我的前辈写的,我这里借用了,希望他不要介意。

修改完成之后,你还需要在你的feature文件以及steps文件的文件头都加上下面两句话:

# -*- coding:utf-8 -*-

# language: zh-CN

用来告诉lettuce你使用的语言是简体中文

       在这里我需要说明一下,windows下使用中文还是有很多问题的,可能就会因为你系统默认的语言或者dos命令默认的语言不同,导致你在运行features文件时会出现很多乱码,在windows下使用中文还是非常麻烦的,有一个好点的提议就是你可以选择一个好点的IDE工具,这样会方便很多,乱码的问题也可以得到解决,我使用的是elipse,自我认为还是比较好用的,后面我会补充如何在eclipse中运行lettuce的

 

5、第一个feature文件

       现在我们的环境也装好了,那就去感受一下Lettuce的优势吧,

让我们先想一个案例:计算两个数的加法!

我在D:\Test\features 目录下新建两个文件:add.feature 、add_steps.py

在add.feature文件中描述我们的问题:

Feature: Compute add

       In order to test lettuce

       As a beginner

       I want to compute add

 

       Scenario: Compute add

              Given I have two number 12 and 13

              When I compute add

              Then I can get number 25

add_steps.py则是需要运行的脚本:

from lettuce import *

 

@step('I have two number (\d+) and (\d+)')

def i_have_numbers(step,number1,number2):

       world.number1 = int(number1)

       world.number2 = int(number2)

      

@step('I compute add')

def compute_add(step):

       world.number = add(world.number1,world.number2)

      

@step('I can get number (\d+)')

def   check_number(step,result):

       result = int(result)

       assert world.number == result, "Got %d"% world.number

      

def add(number1,number2):

       return 20

      

保存之后,进入dos命令,找到文件路径需要注意的是,不需要进入features文件夹中,只需要找到features上级的目录就可以,之后直接输入lettuce,按回车就可以运行

可以看到运行结果是错误的,这个时候可以看提示:你的到的结果是20,实际上你想要得到的结果是25,所以你需要修改add_steps.py文件中的add方法如下:

def add(number1,number2):

       return 25

再次运行,结果就为pass

这个时候也许你会想,那我现在想要测试多对数的相加该如何写脚本呢?

首先我们先要修改事件描述:

Feature: Compute add

       In order to test lettuce

       As a beginner

       I want to compute add

 

       Scenario: Compute add

              Given I have two number 12 and 13

              When I compute add

              Then I can get number 25

 

      Scenario: Compute add

              Given I have two number 24 and 26

              When I compute add

              Then I can get number 50

 

     Scenario: Compute add

              Given I have two number 11 and 29

              When I compute add

              Then I can get number 40

然后回到dos下就使用以前的脚本来运行,可以看到的是Lettuce报错了,根据提示回到add_steps.py去修改脚本,直到运行通过为止。

运行完加法之后可以尝试去写减法,乘法,除法的feature文件以及脚本。

(未完待续......)

 

你可能感兴趣的:(python,features,dos,windows,thoughtworks,脚本)