51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 3044|回复: 2
打印 上一主题 下一主题

[转贴] 基于 lettuce(python)的 BDD 自动化测试框架 Lub 开源项目启动~

[复制链接]
  • TA的每日心情
    无聊
    2024-7-12 13:16
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    跳转到指定楼层
    1#
    发表于 2017-6-22 10:46:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    为什么要做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安装Lubpython setup.py install注:将会自动安装lettuce
    Quick Startstep1 创建一个lub项目lub -i genstep2 熟悉一下生成的结构完成创建后,将在当前目录生成webtc和apptc两个文件夹:分别用于放置web端和移动端的用例。
    他们的结构是一模一样的:
    1. features
    2. --all.feature 自然语言描述的用例集
    3. step_definitions
    4. --steps.py 步骤action
    5. support
    6. --terrain.py 全局控制
    复制代码
    step3 接下来我们先在webtc里做一个demo我们拿百度首页为例,(又是百度 :{)
    先编写一个简单的用例,打开all.feature进行编辑:
    1. Feature: 测试用例集
    2.     Scenario: 百度首页
    3.       Given 打开 "http://www.baidu.com"
    4.       When 在 "id" 为 "kw1" 的框中输入 "lud"
    5.       And 点击 "id" 为 "su1" 的按钮
    复制代码
    接着,我们在steps.py中开始为我们这些自然语言写成的用例匹配行为:
    1. # -*- coding:utf-8 -*-
    2. # step definitions

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

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

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

    11. @step(u'点击 "(.*)" 为 "(.*)" 的按钮')
    12. def clickelem(step,typename,typekey):
    13.     lubclick(lubfind(world.browser,typename,typekey))
    复制代码
    这里,我们使用了lub封装的一些方法。
    world是threading.local的一个实例,他只在当前线程保存值。
    我们来看看全局控制terrain.py里有什么有趣的东西:
    注:terrain是特殊的py,它将最优先运行:
    1. # -*- coding:utf-8 -*-
    2. # controls

    3. from lettuce import *
    4. from selenium import webdriver

    5. @before.each_scenario
    6. def startupdriver(scenario):
    7.     world.browser=webdriver.Firefox()
    复制代码
    terrain中,我用了装饰器,非常实用,他们的全部内容可以参见lettuce这里
    lettuce terrain
    demo和例子可以在lubdemo目录下找到。
    step4 运行!你可以直接使用下面的命令快速运行你的用例集,注意,需要在当前结构目录下运行
    也就是在webtc目录或者apptc下运行,不然会提示找不到features目录
    lub -r normal文档&扩展&其他待补充
    感谢以下这些优秀的框架lettuceseleniumappium
    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    该用户从未签到

    2#
    发表于 2017-6-22 10:54:05 | 只看该作者
    支持,虽然自己似乎还没有能力参与其中。正在学习Python,各种方面都在了解,表示持续关注ing
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2024-7-12 13:16
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    3#
     楼主| 发表于 2017-6-22 10:54:52 | 只看该作者
    巴黎的灯光下 发表于 2017-6-22 10:54
    支持,虽然自己似乎还没有能力参与其中。正在学习Python,各种方面都在了解,表示持续关注ing

    来吧,欢迎参与进来。
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-14 14:50 , Processed in 0.065483 second(s), 22 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表