( 这算是我学习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文件以及脚本。
(未完待续......)