• 0
  • 0
分享
  • Cypress 小试牛刀-测试用例(三)
  • 刘则 2020-08-12 11:44:22 字数 1685 阅读 1734 收藏 0

前面 2 篇我们知道了如何安装、进行页面元素交互,现在我们开始编写一个测试用例

Cypress 提供了基于 Mocha 的语法,基本功能模块

describe() 声明一个测试用例集,可包含多个 it()测试用例,也可以在嵌套测试套件 context()

it() 声明一个测试用例,一个测试用例集至少有一个测试用例

before() 在一个测试用例集中,只执行一次,在所有测试用例之前执行

beforeEach() 在一个测试用例集中,每个测试用例前执行一次

afterEach() 在一个测试用例集中,每个测试用例后执行一次

after() 在一个测试用例集中,只执行一次,在所有测试用例之后执行

上述 4 个方法有没有很熟悉的感觉?

在方法名后面加 .skip() 可以跳过该方法,如 it.skip()

在方法名后面加 .only() 可以只执行该方法,如 it.only()

下面我们以登录为例,编写一个测试用例

图1.jpg

这里我们发现如果每个测试用例都要去写跳转全路径的话,很麻烦,我们能不能把 URL 中公共的部分提取出来呢?

答案是可以的

我们打开图中所示文件

图2.jpg

我们在此可以配置全局 baseUrl,此设置对 cy.visit()和 cy.request() 都生效。

修改后的样子

图3.jpg当我们做自动化的时候,会考虑只登录一次,去执行多个测试用例,那么在 Cypress 中如何做呢?

我要用到 cypress 的 Custom commands 模式来对登录进行封装

在 support 目录下的 commands.js 中增加一个自定义方法

图4.jpg

这样我们就可以在测试用例集中,通过 cy.方法名 来调用它。

图5.jpg

上面的操作是不是也很熟悉?

Cypress 还可以通过调用接口的方式,允许绕过 UI 层

图6.jpg

多个测试用例共享 cookie 的问题

Cypress 在执行每个测试用例的时候会清空 cookies。这样的话我们只登录一次,执行多个测试用例的愿望就落空了!,这怎么办呢?

同学们不要慌!哈,Cypress 给出了几个解决方案。这里我们用其中一种方法来解决它。非常的简单!

我们在 support 目录下找到 index.js 文件,打开它,配置我们的白名单~

完成后我们就搞定啦。

图7.jpg

到此我们之前的例子的测试数据都是在测试用例集里定义的常量。那么我们是不是可以参数化呢?

对此 Cypress 提供了一个 fixtures 的目录,在该目录下新建一个 JSON 文件即可共享数据。

图8.jpg

我们通过 cy.fixture()引用数据,参数为 JSON 文件名。

图9.jpg

断言

Cypress 推荐使用  .should()

should('have.class', 'success') 断言元素的 class 属性值是 'success'

should('have.text', 'Column content') 断言元素文本值 'Column content'

should('contain', 'Column content') 断言元素文本包含 'Column content'

should('have.html', 'Column content') 断言元素 HTML 文本'Column content'

should('match', 'td') chai-jquery 使用 "is()"检查元素是否与选择器匹配

对同一个元素多个断言

```
cy.get('.assertions-link')
  .should('have.class', 'active')
  .and('have.attr', 'href')
  .and('include', 'cypress.io')
```

最后我们写测试用例的时候会遇到上传文件,那么 Cypress 如何上传文件呢?

第一步 安装插件

```
npm install --save-dev cypress-file-upload
```

第二步,我们在在 cypress/support/commands.js 中导入

图10.jpg

第三步把要上传的文件放入 cypress/fixtures 目录下

图11.jpg测试用例中引用的示例

图12.jpg


  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          •   日本的一个城市正在为在家学习增添新意,在教室里使用头像机器人,让孩子们远程参与学校生活。此举正值日本努力应对因大流行病而加剧的学生旷课率飙升之际。日本《每日新闻》写道,日本西南部城市熊本的教育委员会正在发起这项倡议,以减少缺课儿童的焦虑,希望能把他们哄回教室。  这些机器人还能让那些因为COVID-19大流行结束后计划重返课堂的学生更轻松地过渡。  这些机器人只有三英尺多高,附带一个配有麦克风和摄像头的平板电脑(上图仅供参考)。它们还可以自行移动,学生可以用笔记本电脑控制机器人,在学校里自由走动。  与通过静态摄像头观看讲师授课不同,这些机器人意味着远程学生可以获得完整的学校体验,例如参与...
            0 0 680
            分享
          •   最近小编的好友小李来找我抱怨,抱怨的内容也很简单,小李和小马在同一个部门,做着差不多的工作,薪资待遇差不多都是6K。  不久前两人相继跳槽,入职了之后,小李和小马一打听,才知道小马现在的薪资竟然有11K,而小李跳槽后的薪资才堪堪7K,这巨大的落差让小李心里十分不服气,想着自己也不比他差,同样是跳槽,怎么薪资就差了这么多?  其实在工作经验和能力差不多的情况下,这里我们就不得不谈谈谈薪技巧,在换工作时,如何和新公司谈判薪酬福利,才能在有可能的范围内,争取到福利待遇的最大化呢?  把握薪资浮动的弹性  大家都知道,无论哪一家公司,对于薪资都是有上下幅度的,没有一个固定的值。所以,跳槽时,开口谈...
            0 0 1121
            分享
          •   51Testing软件测试网正在收集测试行业问卷结果,如果你也想为测试行业的前景助力,就点击下方的链接提交答案吧,还有精美礼品等你拿(测试课程五选二)。链接:http://vote.51testing.com/  本人在今年互联网大环境如此严峻的情况下,作为一个刚毕业不到一年的初级测试,赶在“金九银十”依然拿到了一些面试机会,并且成功拿下4家公司的offer,其中不乏互联网大厂,而且最高总包给到了接近double(无炫耀的意思 〒▽〒)~  确定好要签的offer后,我决定来复盘一下这波求职的成功原因,也给身处迷茫期的测试朋友提供一个参考,同时抛砖引玉~  其实我认为最根本的原因是我迅速完...
            0 0 1464
            分享
          •   据曼谷邮报(Bangkok Post)今日报道,一位熟悉字节跳动的消息人士透露,字节跳动旗下的 BytePlus 部门正考虑于 2025 年在泰国建立一个数据中心,提供基于云和人工智能(AI)的服务。  该消息人士表示,泰国是字节跳动东盟扩张计划的一部分,该国的电子商务具有巨大的增长潜力,特别是在拥有众多追随者和顶级(OTT)参与者的大型零售品牌方面。  报道称,BytePlus 最近通过委任泰国公司 Light Up Total Solution Public Co Ltd(LTS)为其独家经销商,在泰国市场推出技术解决方案,包括实时商务解决方案,旨在利用当地价值约 25 亿美元(IT之...
            0 0 78
            分享
          •   自动化测试案例是自动化测试工作积累的最重要资产,其生成和维护往往消耗IT企业较多的人力和物力成本。当企业的自动化测试案例数量比较庞大时,长期保持案例的活性使其不失效成为各大IT企业测试团队的迫切需求。  本文详细介绍一种保持自动化测试案例活性的方法,依托农业银行自主研发的“手自一体”的自动化测试平台--擎云平台,采取多项应对技术和措施,形成了“保鲜执行、案例打分”的管理流程,并在擎云平台上获得了最佳实践。  一、保鲜执行  由于批量执行自动化测试案例是一个很繁杂且机械的体力活,可以交由自动化测试平台的执行机每天在空闲的时间段根据事先定义的执行策略自动执行,实现由“自动化”执行自动化测试案例...
            12 12 1456
            分享
      • 51testing软件测试圈微信