基本python语言的lettuce框架
什么是BDD
行为驱动开发是一种敏捷软件开发技术,它鼓励软件项目开发者、QA和非技术人员或商业参与者之间的协作。主要是从用户的需求出发,强调系统行为。BDD包括验收测试和客户测试驱动等的极限编程的实践,作为对测试驱动开发的回应。
需要用pip去安装lettuce
pip install lettuce
主流BDD框架:
Cucumber(ruby) http://cucumber.io/
Jave(java) http://jdave.org/
Behat(php) http://docs.behat.org/en/v2.5/
python:
Behave http://pythonhosted.org.behave/
Lettuce http://lettuce.it/
Lettuce流程:
实现阶乘:
#循环实现阶乘
def f1(n):
c=1
for i in range(n):
i=i+1
c=c*i
return c
#递归实现阶乘
def f2(n):
if n>1:
return n*f2(n-1)
else:
return 1
if __name__=="__main__":
#调用方法
print(f1(10))
print(f2(10))
BDD编程:
基本结构:
features:行为驱动文件夹
zero.feature文件:行为文件,主要用来驱动功能实现代码
steps.py:功能实现代码
zero.feature:
Feature:Compute factorial
In order to play with Lettuce
As beginners
We'll implement factorial
Scenario:Factorial of 0
Given I have the number 0
When I compute its factorial
Then I see the number 1
对以上代码翻译:
功能:计算阶乘
为了使用lettuce
作为初学者
我们将实现阶乘
场景:0的阶乘
假定我有数字0
当我计算它的阶乘
然后,我看到了1
Feature(功能)
Scenario(情景)
Given(给定)
And(和)
When(当)
Then(则)
很接近自然语言,但是也有语法规则
关键字的含义和单元测试框架中的概念的对比:
steps.py:
from lettuce import *
#@---python装饰器
#假如我有一个数字x
#Given I have the number 0
@step('I have the number(\d+)')#正则表达式
def have_the_number(step,number):
world.number = int(number)
#我计算它的阶乘
#When I compute its factorial
@step('I compute its factorial'):
def compute_its_factorial(step):
world.number=factorial(world.number)#计算阶乘之后的结果
#断言
#然后,我就看到了结果y,比较或测试的过程
@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):
if(number==0) or (number==1):
return 1
else:
return number*factorial(number-1)
结果:
如果要用lettuce去做webdriver自动化测试,需要用pip去安装lettuce_webdriver。
pip install lettuce_webdriver
安装nose,nose继承自unittest,属于第三方的python单元测试框架,且更容易使用,lettuce_webdriver依赖于nose框架
下载地址:https://pypi.python.org/pypi/nose/
也支持pip的安装方式
pip install nose
想要深入了解的,可以再去查资料吧,我是不想搞这个了。看着都麻烦