展开

关键词

Effective Testing with RSpec 3(介绍)

无论您是自动化测试新手还是多年来一直使用它们,本书都将帮助您编写更效的测试。 效的,们的意思是测试,它你的价值比写它们的时间更多。们将使用RSpec 3框架来探索编写测试的艺术。 如果您是RSpec的长期用户,您可以从第III,IV和V部分开始。这些包含您在野外可能遇到的情况的详细配方。 稍后,您可以到本书的开头,重温RSpec的理念。 们将一次显示几行代码文件。 如果您需要更多定代码段的上下文,您可以单击文件名标题(在eBook中)或打开书籍的源代码(在本章末尾链接)以立即查看整个文件。 们想花点时间谈谈们对该术语的使用,以及相关术语,测试驱动开发(TDD)。如果TDD,您可以通过手动运行或编写一次性测试工具来检查程序的行为。如果您打算在不久之后废弃该程序,这些方法都可以。 最后,您将能够免除测试套件遇到的问题。Ian Dees在2006年偶然发现了RSpec的旧测试版。这正是他为嵌入式触摸屏设备构建自动验收测试所需要的。

28020

Effective Testing with RSpec 3 (第一部分:入门)

RSpec的API就是决定你希望代码如表现并在你的specs中表达该决定。 一旦你掌握了基础知识,们就无法拒绝向你展示,使RSpec与众不同的一些东西。 在本章中,你将看到:•如安装RSpec并编写你的第一个specs •如使用describe,和用它来组织你的specs •如验证期望的结果•如解释测试失败•如使你的specs不受重复设置代码的影响第 们在这里一个特定的效定义:这个测试是否支付了编写和运行它的成本? •通过编写规范以在正确的详细程度报告失败,您可以提供足够的信息来查找问题的原因 - 而不会淹过多的输出。 •一个示例显示了如使用特定的API。们将在本书中使用所这些术语,具体取决于们要强调的测试方面。

36930
  • 广告
    关闭

    90+款云产品免费体验

    提供包括云服务器,云数据库在内的90+款云计算产品。打造一站式的云产品试用服务,助力开发者和企业零门槛上云。

  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    GitLabCI系列之流水线语法第四部分

    让不同的job缓存不同的cache呢?设置不同的cache:key。----cache:key 缓存标记为缓存做个标记,可以配置job、分支为key来实现分支、作业特定的缓存。 cache:key变量可以使用预定义变量,默认default ,从GitLab 9.0开始,默认情况下所内容都在管道和作业之间共享。 cache: key: files: - Gemfile.lock - package.json paths: - vendorruby - node_modulesprefix: 允许定prefix Runner缓存在做本次实验的时候现在本地runner清除了项目的工作目录和历史缓存。 (因为上面的例子中第三次作业并修改缓存内容)# cd homegitlab-runnerbuilds1Cxihk7-0demodemo-maven-service# lsJenkinsfile README.md

    41910

    Rails 3 Script 改版

    (2.6.0) rspec核心(2.6.2) rspec-期望(2.6.0) rspec-mocks(2.6.0) rspec-rails(2.6.0) 红宝石fcgi(0.8.9) 红宝石openid 们习惯用 .scriptgenerate 或者 .script* .现在这些在rails 3.*都了? profiler 从 一段代码中 获取配置文件信息 插件安装插件 运行程序在 应用程序环境中 运行一段代码 可以使用 -h 运行所命令 以获取 更多信息。 比如们之前常用的,.scriptgenerate controller 现改为:#.scriptrails生成控制器帐户 创建应用程序控制器account_controller.rb 调用erb 创建应用程序视图帐户 test_unit 创建测试单位助手account_helper_test.rb 同时加了几个选项:用法:rails生成GENERATOR 常规选项: -h, #打印生成器的选项和用法 -p,#运行但不做更改

    16920

    开发者死后,他的开源项目会人继续维护吗?

    Ruby 的代码是开源的,这意味着人都可以使用它并对其进行修改。 依赖该工具的测试最终都会失败,因为代码会随着时间推移变得过时,并且与新技术不再兼容。 相关方法能够解决与Rspec-Given关的潜在问题,但是它也让Searls看到了许多可能出潜在问题。 Searls说:“们很容易将开源看作一种纯粹的技术现象。 Ruby Gems项目的Evan Phoenix说:“官方政策,主要是因为它不会经常出现。“一个顾问委员会,用来逐个处理这种类型的事情。” Searls认为,GitHub和Gems等软件包管理者可以在他们的平台上添加一个类似于“去世开关”的东西,如果创建者登录或者长时间更新,程序可以自动将项目或者帐户的所权转让其他人。

    330100

    GitLab 是如用 Headless Chrome 测试的

    下面的例子介绍了GitLab如切换到Headless ChromeGitLab最近从PhantomJS转变为Headless Chrome,用于前端测试和RSpec功能测试(ruby测试框架)。 Poltergeist的Element.trigger(click)在Selenium是不可用的在Capybara中,当你使用find(.some-selector).click时,您所点击的元素必须是可见的,并且不能被重叠的元素所遮盖 事实证明,Chrome不会允许你将send_keys(关键字)发送无法“聚焦”的元素,例如链接,表单元素,document body,或者是带tab index的元素。 结果关于性能,改变之前通过对10个RSpec测试集进行非科学分析来衡量变化,改变后也通过10个测试。分解在这些管道之间添加或删除的测试。 统计的意义不大,所以打算声称们提高了测试速度。们提升的是测试准确率,还极大地改进了测试和调试工具。

    80380

    用Gitlab CICD Pipeline Template部署应用

    Gitlab template将一些CICD中共的方法提取出来作为一个公共的模块提供其他的需要的项目使用,这些原理与Github Action里面的uses指令类似,不了解Gitlab Action : extends: .tests script: rake rspec only: variables: - $RSPEC 现在们准备一个.git仓库作为GitLab Runner的模板仓库,这里假定为 然后在仓库中创建两个目录,分别为jobs,templates,其中jobs目录内包含build,test,deploy模块,template里面的包含不同语言相关的逻辑行为定义,比如整个CICD的过程的书顺序是如执行 此处以BASH方式为主,分享一下如通过Gitlab runner执行基于BASH命令执行的持续构建和发布。 - project: DevOpsTeamcicdtemplate ref: master file: jobsdeploy.yml # 引入部署阶段的单元模块的操作 stages: # 模板中定义如通过

    68910

    用 GitLab 做 CICD 是什么感觉,太强了!!

    这种做法称为持续集成,对于提交应用程序(甚至是开发分支)的每项更改,它都会自动连续进行构建和测试,以确保所引入的更改通过你为应用程序建立的所测试,准则和代码合规性标准。 最后,如果出现问题,可以轻松地滚所更改: ?1.2. 基本 CICD 工作流程 一旦你将提交推送到远程仓库的分支上,那么你为该项目设置的CICD管道将会被触发。 仓库一旦收到推送,GitLab将立即查找.gitlab-ci.yml文件,并根据文件的内容在Runner上启动作业。 项目起一个名字,并确保它是公的 ?3.2. 管道内部分为4个阶段,们可以查看每个阶段几个作业在运行,如下图:构建 -> 测试 -> 部署 -> 性能测试?现在,应用已经成功部署,让们通过浏览器查看。

    2.3K20

    使用 YAML 文件配置 Jenkins 流水线

    * Jenkins 的版本过低,已经很难升级* Wolox 过去几年增长显著,一直面临着如伸缩的问题* 只极少数人如修复 Jenkins 服务的问题* 配置 Jenkins 务不是一件简单的务 ,使们的项目启动过程变慢* 更改每个作业运行的命令也不是一件简单的务,并且权限更改的人并不多。 共享库一个好处是们可以集中扩展和修改们的共享库代码。一旦添加新代码,Jenkins 就会自动更新它,还会通知所务。由于不同语言的项目,们使用 Docker 来构建测试环境。 这让权限访问它的人通过 YAML 文件更改构建步骤。这是对们 CI 工作流程来说是一个重大改进。Docker 使们轻松更换编程语言,而不用对 Jenkins 安装做的更改。 所这些改进节约了们维护 Jenkins 的大量时间,并使们可以轻松扩展而无需额外配置。### 译者小结本文最大的亮点是它介绍了一种实现自定义构建语言的方式。

    1.8K40

    React 测试驱动教程

    因为在适当的位置创建一个根组件。 在们的测试中很多重复的东西,因此们还需要去做一些重构。 由于 Root 传入的 props,那么们可以 shallow render 它一次,然后就在一个 wrapper 中结束了们所的断言。 们可以假装 Root 组件一个子组件叫 CommentList,在安装后将调用意的调。当通过定 props 组件安装时,函数被调用,因此们就可以测试这个场景。 虽然只使用 React 开发了数月,但已经爱上它了。希望本教程可以帮助你更深入地理解一些 React 测试的最佳实践。问题或评论随时联系。测试是们的好朋友!原文链接

    26820

    持续集成gitlab-ci.yml配置文档基础

    一个前置的jobs失败了,commit会标记为 failed 并且下一个stages的jobs都不会执行 #两个特殊的例子值得一提: 1. #局部缓存 #缓存 binaries 和 .config 中的所文件: rspec: script: test cache: paths: - binaries - .config #缓存git中被跟踪的文件 缓存key指令允许们定义缓存的作用域(亲和性),可以是所jobs的单个缓存,也可以是每个job,也可以是每个分支或者是你认为合适的地方,并且cache:key 可以使用的预定义变量。 这样一来,们可以为每个存档提供一个唯一的名称,当需要从GitLab中下载是才不会混乱。 artifacts:name 可以使用的预定义变量(predefined variables)。 Q:如计算管道持续时间? 管道的总运行时间将排除重试和待处理(排队)时间。们可以将这个问题缩减为寻找周期的联合。

    70230

    使用spring提高rails开发效率

    ###声明 目前spring只支持MRI 1.9.3, MRI 2.0.0, Rails 3.2,达到要求的人赶紧升级你们的ruby,rails版本吧###问题 想必采用TDDBDD方式进行开发的rails 开发者都着这样类似的经历:pair写了一个测试运行测试等待该来编写产品代码运行测试等待代码bug测试失败修复测试运行测试等待测试通过,yeah! 再过头来想想,享受这段pair的过程吗?pair很力,很快就把一个taks实现成一个测试用例桌子上的水果也很好吃。。。。 可是,总觉得点不爽快,原来是那么多的等待,每运行一次测试,就需要等待十几秒甚至几十秒,每天会运行上千次测试,这是多大的浪费? ###总结 spring把对项目代码的影响减少到了,并且能够去掉加载rails环境的时间,极大地提升rails开发者的效率,是现rails开发者必不可少的利器。enjoy coding!!!

    45360

    算法和动态规划,到底谁是谁爹?文末送书

    们前文经常说算法和递归算法点类似,的问题如果实在想不出状态转移方程,尝试用算法暴力解决也是一个聪明的策略,总比写不出来解法强。那么,算法和动态规划到底是啥关系? 今天就用力扣第 494 题「目标和」来详细对比一下算法和动态规划,真可谓群魔乱舞:注意,出的例子 nums 全是 1,但实际上可以是意正整数哦。 算法的核心都是穷举,算法就是一个暴力穷举算法,前文 算法解题框架 就写了算法框架:def backtrack(路径, 选择列表): if 满足结束条件: result.add(路径) return 对于每个数字 nums,们可以选择一个正号 + 或者一个负号 -,然后利用模板穷举出来所可能的结果,数一数到底几种组合能够凑出 target 不就行了嘛? 因为们只不过恰好发现了重叠子问题,顺手用备忘录技巧优化了,但是底层思路变,依然是暴力穷举的算法,依然在遍历一棵二叉树。

    6820

    算法:电话号码的字母组合

    「代码随想录」一个星标吧!❝多个集合来求组合,还是点不一样! ❞17.电话号码的字母组合定一个仅包含数字 2-9 的字符串,返它能表示的字母组合。出数字到字母的映射如下(与电话按键相同)。注意 1 不对应字母。 遇到的一样的问题,就是这for循环的层数如写出来,此时又是法登场的时候了。 再来看参数,参数指定是题目中的string digits,然后还要一个参数就是int型的index。注意这个index可不是 算法:求组合问题!和算法:求组合总和! 输入1 * #按键等等异常情况代码中最好考虑这些异常情况,但题目的测试数据中应该异常情况的数据,所以加了。「但是要知道会这些异常,如果是现场面试中,一定要考虑到!」

    30020

    Step by Step!Kubernetes持续部署指南

    在很久很久以前的一份工作中,务是将老式的LAMP堆栈切换到Kubernetes上。 使用Semaphore测试持续集成让测试变得趣并且高效。一个完善的CI 流水线能够创建一个快速反馈路以在造成损失之前发现错误。们的项目附带一些现成的测试。 构建Docker镜像们可以在Kubernetes上运行东西,只要它打包在Docker镜像中。在这一部分,们将学习如构建镜像。们的Docker镜像将包含应用程序的代码、Ruby以及所的库。 如果最新镜像,也无需担心,只是需要花费长一点的时间来构建。最后,们push新的镜像。注意,这里们使用SEMAPHORE_WORKFLOW_ID 变量来标记镜像。 对于来说,负载均衡器被分配到外部IP 35.232.70.45。需要将其更改为你的提供商分配你的那个,然后们来试试新的服务器。

    15320

    从一道「算法」经典题与你分享算法的基本套路 ..

    定一个仅包含数字 2-9 的字符串,返它能表示的字母组合。出数字到字母的映射如下(与电话按键相同)。注意 1 不对应字母。?示例:输入:23输出:. 说明: 尽管上面的答案是按字典序排列的,但是你可以意选择答案输出的顺序。DFS 解法对于字符串 ds 中的每一位数字,都其对应的字母映射数组。 复杂度为 空间复杂度:多少种方案,就需要多少空间来存放答案。复杂度为 点评这是一道「算法」的经典题。思维的上的难度,考察的是对「算法」的基本理解。通常们会如联想到「算法」呢? 基本上对于那些要枚举所方案的题目,其实都应该先想到「算法」。「算法」从算法定义上来说,不一定要用 DFS 实现,但通常结合 DFS 来做,难度是最低的。 算法的基本模板是:确定结束过程的 base case遍历所的「选择」对选择进行决策 (做选择 -> 递归 -> 撤销选择)void dfs(路径, 选择列表, 结果集): if (满足结束条件

    10732

    干货|用法(backtracking algorithm)求解N皇后问题(N-Queens puzzle),附代码及详细注释

    谈天说地吹个水哈喽哈喽 ~~ 各位小伙伴好久不见的啦,也不知道大家了。如果,那待会再来问一下好了。嘛,这个时候。 N皇后问题其实就是算法中的一个典型应用。为此,在这里小编必要大家科普一下算法,顺便感受一下大法好究竟是多么的力。 2.1. 值得注意的两点* 若用法求问题的所解时,要到根,且根节点的所可行的子树都要已被搜索遍才结束。* 而若使用法求一个解时,只要搜索到问题的一个解就可以结束。2.3. 什么是深度优先搜索? N皇后问题的solve相信看完上面一大串的算法。各位都已经被科普得想原地爆炸了。好啦,接下来们就看看如的思想解决这个N皇后问题。 5)但是此时并不能在此处结束程序,因为们要找的是所N皇后问题所的解,此时应该清除该行的皇后,从当前放置皇后列数的下一列继续探测。由此可见,非递归方法的一个重要问题时及如的问题。

    99050

    【算法进阶】用法(backtracking algorithm)求解N皇后问题(N-Queens puzzle)

    N皇后问题其实就是算法中的一个典型应用。为此,在这里小编必要大家科普一下算法,顺便感受一下大法好究竟是多么的力。 值得注意的两点* 若用法求问题的所解时,要到根,且根结点的所可行的子树都要已被搜索遍才结束。* 而若使用法求一个解时,只要搜索到问题的一个解就可以结束。2.3什么是深度优先搜索? 03N皇后问题的solve相信看完上面一大串的算法。各位都已经被科普得想原地爆炸了。好啦,接下来们就看看如的思想解决这个N皇后问题。 2)如果已经探测完所的列都找到可以放置皇后的列,这时候就应该了,把上一行皇后的位置往后移一列。 5)但是此时并不能在此处结束程序,因为们要找的是所N皇后问题所的解,此时应该清除该行的皇后,从当前放置皇后列数的下一列继续探测。由此可见,非递归方法的一个重要问题时及如的问题。

    3.6K20

    GitLabCI系列之流水线语法第一部分

    job在每个项目中,们使用名为.gitlab-ci.yml的YAML文件配置GitLab CI CD 管道。可以定义一个或多个作业(job)。每个作业必须具唯一的名称(不能使用关键字)。 ----scriptjob:script: - uname -a - bundle exec rspec注意:时, script命令将需要用单引号或双引号引起来. 指定的script与主脚本中指定的脚本串联在一起,并在单个shell中一起执行。after_script 用于定义将在每个作业(包括失败的作业)之后运行的命令。这必须是一个数组。 指定的脚本在新的shell中执行,与before_script或script脚本分开。可以在全局定义,也可以在job中定义。在job中定义会覆盖全局。 如果一个阶段运行失败,最后提交状态为failed。未定义stages全局定义的stages是来自于每个job。如果job定义stage则默认是test阶段。

    41220

    这一次,真正理解算法

    理解“算法” 若人生可重来,如才能在岔路口做出最正确选择,让自己的人生“最优”? 贪心算法,在每次面对岔路口的时候,都做出看起来最优的选择,期望这一组选择可以使得们的人生达到“最优”。 如确保得到最优解? 算法很多时候都应用在“搜索”问题:在一组可能解中,搜索期望解。 处理思想,类似枚举搜索:枚举所解,找到满足期望的解。 放置过程中,不停地检查当前方法,是否满足要求满足 跳到下一行继续放置棋子不满足 换种方法尝试适合递归实现:0-1背包经典解法是动态规划,但还简单但那么高效的解法。 通配符且现在规定:* 匹配意多个(大于等于0个)意字符? 匹配0或1个意字符如算法,判断某定文本,是否匹配定的正则表达式? 依次考察正则表达式中的每个字符,当是非通配符时,就直接跟文本的字符进行匹配:相同 继续往下处理不同 遇到特殊字符时,就多种处理方式,如*多种匹配方案,可匹配意个文本串中的字符,先随意选择一种匹配方案

    7720

    扫码关注云+社区

    领取腾讯云代金券