前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Cypress 10.x 组件测试指南

Cypress 10.x 组件测试指南

作者头像
iTesting
发布2022-09-01 11:42:24
1.1K0
发布2022-09-01 11:42:24
举报
文章被收录于专栏:iTestingiTesting

一个人到底要走多少弯路,才能成为一名合格的测试开发工程师?

Cypress又又又更新啦!我将讲解如何使用Cypress进行组件测试。(买了书的同学们,公众号回复你的微信号,拉你到Cypress中国群)。

最近两年测试界最火的测试工具莫过于Cypress,作为测试工程师弯道超车必备、下一代UI自动化测试利器,Cypress开发团队也一直在拼命做事,这不,Cypress10.x重磅发布,将“Component Testing”重磅引入到了测试团队。测试人员又可以将自己的势力版图向开发侧移动一下啦 :)

什么是组件测试

组件测试(也叫模块测试),关注可单独测试的组件。

代码语言:javascript
复制
组件测试允许单独测试一个组件,这在关注特定组件的功能时很重要,

编写组件测试

当你第一次选择组件测试这个类型时,Cypress会自动为你创建相关配置。接上两篇文章介绍,我们在项目根目录下运行:

代码语言:javascript
复制
yarn debu

然后,在选择测试类型的时候,选择Component Testing:

然后,Cypress会让你选择一个框架类型:

我们选个Create React APP,当然你也可以选择列表中的其他选项。

选好后,点击Next,你会看到下面这个图:

根据图中提示,在目录下,执行上图命令行命令。安装成功后,你会看到如下界面:

点击”Continue“,

你会看到一些配置,点击”Continue“,最终你会看到这个界面。

然后选择你要运行的浏览器,点击”Start Component Testing in Chrome“,

选择Create your first spec,

点击Create Spec,然后你会看到下图,

点击”OK“, 然后你会看到如下页面

修复这个错误,安装react-dom

代码语言:javascript
复制
yarn add react-dom

然后,你就能看到测试用例创建成功了。

同时,你检查项目文件夹,你会发现文件已经创建到了cypress/component下了。

运行测试用例

测试用例的运行基本不变,你可以直接:

代码语言:javascript
复制
npx cypress run

但是你也知道我不推荐。我们去更改项目根目录下的package.json文件。给它添加下如下scripts部分。最后,你的package.json看起来像这样:

然后你就可以在命令行里如此运行:

代码语言:javascript
复制
yarn debug

然后,你就可以愉快的编写执行Cyprss用例了。

两个难点

1. 做Component Test的前提是你对前端代码库有访问权限,否则一切都是白谈。

2. 你的Cypress框架要和你的Web端代码放在一个代码库下,这样你mount起来才方便。这个就是另外一个困难。

由于这两个原因,加上开发人员也无意放手组件测试, 所以大部分情况下测试人员都不会执行Component Test这个测试类型。

一个真实用例

假设你在你的组织有一定发言权,搞定了以上两件事,我们来看看Cypress能带给我们什么惊喜。

首先,要做组件测试,我们得有一个Web APP。你需要创建一个Web App。Cypress支持几种框架,我们使用create-react-app来快速创建一个Web App。

代码语言:javascript
复制
npx create-react-app my-ap

然后,你的项目文件夹会变成这个样:


my-app就是我们刚刚创建好的一个react web app。

然后我们把这个app运行起来:

代码语言:javascript
复制
// 先到my-app文件夹下
cd my-app
// 启动
npm start

浏览器访问:http://localhost:3000/, 你将看到我们的app启动了。

此时,更改我们的component Test测试文件:

代码语言:javascript
复制
import * as React from 'react'
import App from '../../../App'
describe('ComponentName.cy.js', () => {
  it('renders learn react link', () => {
    cy.mount(<App />)
    cy.contains(/learn react/i).should('be.visible')

  })
}

然后,在项目根目录下执行运行:

代码语言:javascript
复制
yarn debug

你会发现运行失败了。查看Log得知:

”Relative imports outside of src/ are not supported“,

也就是说,我们的测试文件里,导入的相对路径超出了src文件夹,所以我们运行失败。

代码语言:javascript
复制
import App from '../../../App

知道了错误就好办了。我们去更改项目结构,变成如下这个样子:

两个要点:

  1. 更改项目的cypress.config.js文件,将component下的specPattern加上。这样符合这个pattern的便都是Component 测试。
  2. 把你的Component测试文件移到src下。跟你要测试的组件同目录。避免无法导入。

然后,你在项目根目录下,执行

代码语言:javascript
复制
yarn debug

你会发现一切正常,测试成功。

关键点

你要测试哪个组件,就把哪个组件导入进来,然后mount它。

疑惑点

如果框架使用的是create-react-app,那么你在组件测试导入时,必须保证导入的路径在src下。这样就阻挡了我们正常的测试用例组织结构,我们无法把所有component 测试用例都放在component文件夹下面。略有些不方便。

Cypress有很多奇淫巧技, 我已经总结超过百篇

别走开,下一篇更精彩!

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-06-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 iTesting 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 什么是组件测试
  • 编写组件测试
  • 运行测试用例
  • 两个难点
  • 一个真实用例
  • 关键点
  • 疑惑点
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档