其他测试框架 基于 lettuce (python) 的 BDD 自动化测试框架 Lub 开源项目启动~

Archer · 2014年07月18日 · 最后由 taurus 回复于 2014年10月20日 · 1809 次阅读
本帖已被设为精华帖!

lub 项目地址:https://github.com/qddegtya/Lub

为什么要做 lub?

一开始是出于对calabash项目的热爱,后来,这种热爱化为动力。
我决定使用 python 的 BDD 框架来驱动自动化测试项目。
当我发现lettuce之后我显得很兴奋。
这是一个非常优秀的 BDD 框架,完全采用 python 编写,有了 lettuce 之后,你几乎只要做一些附加工作就可以了。
所以 lub 就是对 lettuce 的一剂润滑剂,但是 lub 是没有办法称之为一个完整的自动化测试框架的,至少目前是如此。
所以,我在项目标题里打上了"demo"
很显然,lub 还有很多工作需要去做。

既然有了 lettuce,为什么还要 Lub?

不可否认,lettuce 是一个出色的 BDD 框架,但是要想运用到 web 和 app 的自动化测试中去就可能需要做一系列工作。
这些工作包括大家熟悉的封装,command 管理,报告自定义,甚至是通信......等等工作。
lub 希望可以做到:当你使用这个"润滑剂"时,你感受到了 lettuce 的 BDD 魅力。

安装依赖

pip install -r requirements.txt

安装 Lub

python setup.py install

注:将会自动安装 lettuce

Quick Start

step1 创建一个 lub 项目

lub -i gen

step2 熟悉一下生成的结构

完成创建后,将在当前目录生成 webtc 和 apptc 两个文件夹:分别用于放置 web 端和移动端的用例。
他们的结构是一模一样的:

features
--all.feature 自然语言描述的用例集
step_definitions
--steps.py 步骤action
support
--terrain.py 全局控制

step3 接下来我们先在 webtc 里做一个 demo

我们拿百度首页为例,(又是百度 :{)

先编写一个简单的用例,打开 all.feature 进行编辑:

Feature: 测试用例集
    Scenario: 百度首页
      Given 打开 "http://www.baidu.com"
      When 在 "id" 为 "kw1" 的框中输入 "lud"
      And 点击 "id" 为 "su1" 的按钮

接着,我们在 steps.py 中开始为我们这些自然语言写成的用例匹配行为:

# -*- coding:utf-8 -*-
# step definitions

from Lub.webtools.actions import *
from lettuce import *

@step(u'打开 "(.*)"')
def openurl(step,url):
    lubget(world.browser,url)

@step(u'在 "(.*)" 为 "(.*)" 的框中输入 "(.*)"')
def typekey(step,typename,typekey,typeval):
    lubinput(lubfind(world.browser,typename,typekey),typeval)

@step(u'点击 "(.*)" 为 "(.*)" 的按钮')
def clickelem(step,typename,typekey):
    lubclick(lubfind(world.browser,typename,typekey))

这里,我们使用了 lub 封装的一些方法。
world 是 threading.local 的一个实例,他只在当前线程保存值。

我们来看看全局控制 terrain.py 里有什么有趣的东西:
注:terrain 是特殊的 py,它将最优先运行:

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

from lettuce import *
from selenium import webdriver

@before.each_scenario
def startupdriver(scenario):
    world.browser=webdriver.Firefox()

terrain 中,我用了装饰器,非常实用,他们的全部内容可以参见 lettuce 这里
lettuce terrain

demo 和例子可以在 lubdemo 目录下找到。

step4 运行!

你可以直接使用下面的命令快速运行你的用例集,注意,需要在当前结构目录下运行
也就是在 webtc 目录或者 apptc 下运行,不然会提示找不到 features 目录

lub -r normal

文档&扩展&其他

待补充

感谢以下这些优秀的框架

lettuce
selenium
appium
共收到 17 条回复 时间 点赞

是不是不兼容 python33 呢,报这个错是咋回事呢?

Archer #16 · 2014年07月22日 Author

#15 楼 @jakewendao 边学边就上吧~

正在学 python 的同学怎么帮忙?

Archer #14 · 2014年07月21日 Author

#10 楼 @mingway_hu 别啊,我每次听到大神两个字,就心虚的不得了。别坑我了。。。。

Archer #13 · 2014年07月21日 Author

#12 楼 @mingway_hu xiaocong 哥的这个直接了当啊,用 python 将 uiautomator 封装了一遍,这个估计 lub 也要做一遍。。。

A 神,我还发现一个有意思的
https://github.com/xiaocong/uiautomator

貌似是论坛里一大哥(xiaocong)写的~

A 神求带~

昨天大意,click 方法忘记 callback 了,今早已修复。

Archer #10 · 2014年07月21日 Author

昨天更新了几个方法,修改了一个小 BUG~

楼主强大!

不错,会持续关注

#3 楼 @shixue33 来吧,欢迎参与进来。

支持,虽然自己似乎还没有能力参与其中。正在学习 Python,各种方面都在了解,表示持续关注 ing

支持 Markdown 格式, 粗体删除线单行代码
支持表情,见 Emoji cheat sheet
按 “M” 键查看更多 帮助
注意单词拼写,以及中英文排版,参考此页

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册