说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

基于Python的行为驱动开发实战

HTML文档下载 WORD文档下载 PDF文档下载
行为驱动开发(Behavior-Driven Development,BDD)是一种卓越的开发模式,可使整个团队保持专注,保持自信,保持活力,并使潜在错误降到最低。

【编者按】行为驱动开发(Behavior-Driven Development,BDD)是一种卓越的开发模式。能帮助开发者养成日清日结的好习惯,从而避免甚至杜绝“最后一分钟”的情况出现,因此对提高代码质量是大有裨益的。其与Gherkin语法相结合的测试结构及设计形式,使得对团队的全部成员包括非技术人员都具有极好的易读性。

所有代码都必须进行测试,这意味着上线时把系统瑕疵降到最低甚至为零。这需要与完整的测试套件相配,从整体把控软件行为,使得检测与维护都能有序进行。这就是BDD的魅力所在,难道不心动吗?

什么是BDD?

BDD的概念和理论源自TDD(测试驱动开发),类似于TDD的理论要点是在编码前先写好测试。不同点是除了使用单元测试进行细粒度化测试,还使用接受测试(acceptance tests)贯穿程序始末。接下来我们会结合Lettuce测试框架进行讲解。


BDD过程可简单概括为:

  • 编写一个缺陷接受测试
  • 编写一个缺陷单元测试
  • 使单元测试通过
  • 重构
  • 使接受测试通过

在每个功能里,如有需要重复上述步骤。

敏捷开发中的BDD

在敏捷开发中,BDD更是如鱼得水。

如果项目的新功能和新需求每隔一、两个星期就发生变更,那么该团队需要配合进行快节奏的测试和编码工作。Python中的接受和单元测试可以帮助实现该目标。

接受测试为人熟知的是使用了一个英文格式的“特性”描述文件,内容是含有的测试以及个别测试。这样做的好处是使整个项目团队都参与其中,除了开发者,还有管理者与商业分析者等不参与实际测试过程的非技术成员。

特性文件的编写遵循全员可读的规则,使技术和非技术成员都能清楚理解与接收。如果只包含单元测试,那么有可能会导致需求分析不全面或不能达成共识。接受测试的最大优点是适用性强,不论项目规模大小都能运用自如。

Gherkin语法

通常会使用Gherkin来编写接受测试,Gherkin来自Cucumber框架,由Ruby语言所编写。Gherkin语法十分简单,在Lettuce Python中主要使用以下8点来进行特性和测试的定义:

  • Given假设
  • When时间
  • Then下一步
  • And与
  • Feature特性:
  • Background背景:
  • Scenario Outline场合大纲:

安装

使用Python常用的pip install语句就可完成Lettuce包的安装:

$ pip install lettuce
$ lettuce /path/to/example.feature用于运行测试。可以每次只运行一个测试文件,或者是提交目录名来运行目录下的所有文件。

为了使测试的编写和使用更加容易,我们建议把nosetests也安装好:

$ pip install nose

特性文件

特性文件由英语写成,内容是测试所覆盖的程序范围。此外还包括测试的创建任务。换言之,你除了需要编写测试,还得规范自己就程序的方方面面编写出良好的文档。这样做的好处是使自己对代码上下都心中有数,明确下一步做什么。随着项目规模的扩大,文档的重要性会逐步显现;例如重新回顾某个功能或对某个调用API进行回溯等等。

接下来会结合TDD中的一个实例创建一个特性文件。该实例是一个由Python写成的简易计算器,同时会演示接受测试的基本写法。目录构成的建议是建立两个文件夹,一个是app,用于放置代码文件如calculator.py;另一个是tests,用于放置特性文件夹。
如何控制关键字段的重复输入及报错-Delphi资料 如何设置Microsoft SQL Server 全文索引服务 ?-Delphi资料 如何设置多用户环境的PARADOX数据库-Delphi资料 如何实现在一个Dbgrid中显示多数据库-Delphi资料 如何用SQL查询日期型字段?-Delphi资料 如何在数据库中存放avi文件-Delphi资料 如何在注册表中注册BDE-Delphi资料 筛选数据-Delphi资料 实现不同数据库系统之间的数据转移-Delphi资料 使 用WISQL32 同 时 访 问SQL SERVER 和SYBASE 数 据 库Delphi资 使用Session构件可以在打开有密码的库时不用输入密码-Delphi资料 使用SQL实现字段数据的模糊查询-Delphi资料 数据表的索引被损坏了怎么办-Delphi资料 数据库的密码、日期显示-Delphi资料 数据库应用程序开发中图像数据的存取技术-Delphi资料 数据库中图像数据的存取技术-Delphi资料 数据库转换-Delphi资料 数据浏览部件的应用及编程-Delphi资料 数据文件路径的管理-Delphi资料 随意控制DBGrid每一行的颜色-Delphi资料 通过DELPHI实现JAVA调用ORACLE数据库数据 通过编写代码来设置数据库的别名-Delphi资料 为Delphi数据表格增加彩色 为Delphi提供Pack和Undelete功能 为Delphi中数据库报表加网格 为数据库报表加网格-Delphi资料 为数据库建立索引-Delphi资料 掀开SQL Server 7.0的面纱-Delphi资料 限制数据库记录数-Delphi资料 向数据库发送密码-Delphi资料 一个关于字符串的小问题-Delphi资料 如何查询我连接到哪个数据库? 哭着请求帮助。。。。。页面显示问题!!在线等着 网络技术到底是指什么???? 我想在<<三国九>>里输入正确的中文,有法子么? 能帮我改改么? 紧急求助,请高手支招 请问在JTABLE中如何将某几行设置成可以被选择的,其他几行设置成不能被选中的? 请问怎样修改SDI框架的标题及去掉最大化按钮??? 在自定义的用户控件上公开引用windows控件的事件怎么做啊!!谢谢 2003中为什么IDE设备只能用PIO模式? 在FAQ里见到这样一句,不明白什么意思 怎么我用vc 的 odbc 做数据库时,工程名为try ,在工程工作区的“class view”面板里没有tryview类的? 不能使用xmldocfile() 文档对象的问题 关于键盘纪录,高手 如何使用IPAddress控件? 初学者问:怎么用UpdateAllViews()? 无法创建asp.net应用程序 大家帮帮我吧,我都快崩溃了 中文乱码的问题 !!谁在VMWare 3.2里装过RedHat 9.0和RedFlag 3.0,请看看这些问题(100分)!! 如何使在输入框选中的文字在提交后仍然显示在输入框中? 无法创建asp.net应用程序 高手在上,请问怎么样在win2k中实现关闭程序和绘图[内详] 初学者问:如何在listview中查找其中一行? 怎样在调试窗口中看到变量值? 郁闷中,狂散分。。。。。。 DCOM怎么使用? 想做一个地区门户一般要包含那些栏目?? 线程 怎么能让DELPHI编出来的程序最小化以后进入到系统托盘? C++问题,请进来帮忙! help me ~!!! 以下行为究竟是关闭端口还是使用端口 callzjy(【剑客西门吹雪原来是仁者帮帮主...】) 怎么翻了这么多老帖子出来了??? 求原代码下载 大家都在干什么? 有什么东东大家可以一起研究研究? 初学者问:如何在listview中查找其中一行? fortran语言的高手请进,分数不够再加 我是一个刚刚步入JAVA世界的小鸟 恳请得到大家的帮助 。。 ActiveForm发布问题。 怎么能让DELPHI编出的程序像QQ一样可以自动隐藏? 一个关于dll的例子,运行不了,请帮忙看一下。 程序打包 BCB产生调试符号的问题 为什么要4张1寸的,1张2寸的照片?要这么多干什么/ 请问怎么样用C#遍厉注册表? 请问大家如何做一个实时的屏幕抓取的程序啊,是实时 各位大哥大姐帮帮小弟,先谢谢了!!! 用Delphi开发的WebService能否在NT4的IIS上面运行? 键盘纪录问题 6,图中改的不一定对的 某广场是一个正方形,沿着边缘走一圈是600米,这个广场的面积是多少公顷? ( )的重量大约是1吨.( )的长度大约是1千米.( )的面积大约是3平方米. 求详解 图中改的不一定对 除了绿色的树叶,绿色的小草,还有绿色的什么? 历史晚期猿人和晚期智人有什么差异 对于给出的一组权w={10,12,16,21,30},通过霍夫曼算法求出的扩充二叉树的带权外部路径长度为A.89 B.189 C.200 D.300 一个平行四边形相邻两条边的长度分别是12厘米和18厘米,其中一条边上的高是15厘米.这个平行四边形的面积是多少? 晚期智人和现代的我们有多少区别?晚期智人之后的多少年人类才定型了?从猿到晚期智人,那么晚期晚期智人之后的多少年人类才定型了?所谓的进化才停止了?(其实应该还没停止,还一直在进 可以写约等于吗,初中老师说就算是近似值也要写直等于, 要保持杠杆平衡,同一侧的刻度和所挂的棋子数成( )比例? 请问什么是"太岁"? 甲、乙、丙分别出资7万元、8万元和35万元,成立了一家有限责任公司.其中,甲、乙的出资为现今,丙的出资为房产.公司成立后,又吸收丁出资现金10万元入股.半年后,该公司因经营不善,拖欠巨额 除人外,宇宙中有类似人的高智慧生物存在吗? 太岁是什么? 三人合办一企业,共投资143万元,投资最多的与投资最少的钱数的比为5:3,问第三个人最多投资多少万元?最少投资多少万元?要过程 橡筋动力飞机怎样飞得高,飞的稳,机翼怎样打磨最好,翼台粘在木棍的什么地方稳? 太岁究竟是什么?太岁不是一个物体吗?怎么会犯它啊?以前一直以为是一个神的称呼,后来看解密大行动才知道太岁是一个物体,那犯太岁是指犯了这个物体?不懂 在△ABC中,∠BAC=90°,AB=AC,点D丶E在BC上.若BE=2,ED=√5,CD=1,求∠EAD的度 动力橡筋飞机要怎样才能飞得远一点啊.如题不可以用电池 初高中衔接物理题——将一个物体从一定高度由静止释放,实验证明,若不考虑空气阻力的作用将一个物体从一定高度由静止释放,实验证明,若不考虑空气阻力的作用,物体做匀加速直线运动,加 注册100万公司分期出资,第一次是30万,其中10万是自己的资金,20万是借款,注册下来后要还那20万怎么做账注册了个100万的公司,因资金紧张分期出资,开始是30%,也就是30万,其中10万是外面股东自 全面深化改革的重大意义和指导思想是什么?500字 在不考虑空气阻力 给定实数集:8,5,13,2,6.试构造具有最小带权外部路径长度的扩充二叉树,并求该树的带权外部路径长度这个外部带权路径是什么意思 甲乙丙三人分别投资50万元、30万元、20万元成立股份公司,一年后亏损12万元,甲提出每人承担4万元你认为是否合理?为什么? 如图所示,在车厢中一小球被a,b两根轻质细绳拴住,其中a绳与 数据结构题:对于给出的一组权w={10,12,16,21,30},通过霍夫曼算法求出的扩充二叉树的带权外部路径长 去年5月,妈妈、李叔叔、陈阿姨三人分别投资了5万元,20万元,10万元,合资办了一个有限责任公司,今年5月经过核算,公司可用于分配的盈利为6.3万元,他们三人合资时约定:“公司每年可用于分 建筑工地用2份的水泥,3份的沙子和5份的石子配制混凝土. (1)三种建筑材料是按怎样的比例配制的?建筑工地用2份的水泥,3份的沙子和5份的石子配制混凝土.(1)三种建筑材料是按怎样的比例配制 数据结构:具有n个结点,其路径长度最短的二叉树具有n个结点,其路径长度最短的二叉树是()A 哈夫曼树 B 完全二叉树 C AVL树 D二叉排序树B,可我觉得A,B,C,D都不对,树形不同最短长度是不一样 如图,在△ABC中,AB=AC,BC中点为E,BD⊥AC,垂足为D,若EAD=27°则∠ABD= 橡筋头绳里的橡胶成分通常使用的橡筋头绳里的橡胶丝(供应商称马来西亚橡胶丝)主要成分是什么?我要在产品说明书上写材质名称 翻译成英文 请问加磁环的线材比不加磁环的有什么好处? 橡胶弹力大还是乳胶弹力大 总经理秘书 怎么翻译 如图,△ABC中,E、D为BC上两点,且AB=BD,AC=CE,∠B+∠C=70°,则∠EAD的度数是多少? 一个长方形的长增加2,宽减少1,其面积不变;如果长减少1cm,宽增加1cm,则面积增加1的平方,原长方形面积 霍夫曼是谁 甲乙丙三人投资55万元办一个工厂.甲投资总数的五分之一,余下的由乙丙承担,且乙比丙多投资20%.乙投资了 一个细胞株中是同一种类型的细胞吗?比如说:全都是上皮细胞? 长是3cm,高是2cm,宽是1cm.表面积是() 三人合伙做生意,甲入股11万,乙入股11万,丙入股3万,利润8万,甲乙丙三人如何分 鞍部等高线地图 图谁给我鞍部等高线的图? 请问d为什么不可以?在a的非惯性系中,b受向左的惯性力,垂直斜面方向上对b的支持力增加吖.理科女+自学非惯性力, 甲乙丙三人共出13元合买了一批薄本.没人出资数相同.由于甲比丙少拿21本,乙和丙每人都要给甲1.4元.三人共买了多少本薄本? 请问橡根 橡筋有什么区别?如题. World中画圆,怎样在圆内编辑字,且字能与圆一样有弧度? 如下图,在竹竿左侧刻度4上放4枚棋子,在竹竿右侧刻度4上放()枚同样的棋子才能保证竹竿平衡;如果在竹竿左如下图,在竹竿左侧刻度4上放4枚棋子,在竹竿右侧刻度4上放(4)枚同样的棋子才能保 怎样使橡筋飞机在空中停留时间较长回答请不要空虚 比如“调整重心,保证飞机的稳定”怎样做到他那样飞?机翼是向上弯还是向下弯动力较大?请告诉我你所知道的注:并不是橡皮多扭转几次 在2007PPT中如何做出有弧度的文字就是公章效果的文字,使文字有弧度,我知道在2003PPT怎么做,但是07的不知道如何处理,请指点迷津, 傣族的风俗习惯简介100字内快~ 设o为坐标原点,给定一个定点A(4,3),而点B(x,0)在x轴的正半轴上移动,l(x)表示向量AB的长,则函数y=x/l(x)的值域为 弱科用英语怎么说 根据中文名取英文名 吴迪(男) 不要取wody,woody之类的 设O点在坐标原点,给定一个定点A(4,3).而点B(x,0)在x轴的正半轴上移动,l(x)表示AB的长求函数y=l(x)的值域, 怎么在一个月内把英语这科补回来..要求自学...我从初1到初2都没听过英语课...现在就快到初3了...我想在这个暑假里补回来... 福州到厦门的动车经过站 设O为坐标原点,给定一个定点A(4,3),而点B(x,0)在x轴的正半轴上移动,l(x)表示AB的长,求函数y=x/[l(x)]的值域. 斯诺登发公开信谴责美英 吁全球性解决埃及“世纪审判”再被推迟纽约商品交易所黄金期货市场4日上涨叙利亚强调将在战乱期间保障民众医疗条北京中小学禁售碳酸饮料引争议 被指管油价4日上涨美元对主要货币汇率4日下跌俄大力保护文化遗产穆沙拉夫获保释有望结束软禁 仍被阻止美对冲基金巨头因内幕交易被罚18亿美湖南3名遇害学童集体下葬 家属呼吁加湖南警方确认杀3儿童案疑犯仅一人 动印度今日发射火星探测器 否认与中国竞克里抵沙特修补关系 大赞沙特重要战略冀中星要求公开殴打致残案复查结论被驳初生男婴医院被盗 湖北通城人民医院承冀鲁浙豫皖等地侦破多起街头“包小姐”印度今日发射火星探测器 否认与中国竞北京整形机构调查 韩国“名医”多为游“公安大V”陈里任职中央政法委 关注转基因食品标识混乱 专家建议修法对管他们从乐山 漂游回重庆打造水铁公联运 构建立体交通走廊水上“世界杯”助学慈善赛本周四 解放碑“海淘”去35岁大学毕业 找工作一波三折未来三天最高温38℃招商银行理财产品 余额成功突破万亿今日开奖十番棋大战李世石再胜《变4》下线,与20亿擦肩而过一场说走就走的旅行 大一女生1000月息5分房产抵押 这投资真有这么好?天价转会费或将作古,足联欲给球员定价孩子睡不好,身高会受影响都是天热惹的误会 车主开错车道“被罚租车3年车就归你,车商盯上“公车改革到忠县双桂赏荷花重庆市民耍武汉景区有优惠招商火爆进行中……招商银行在渝成立首家小微贷款专业支行天弘基金再出手 打造企业版余额宝
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘