vue-cli 自动化测试 Nightwatch 详解

2018-08-30 15:01:19 分类:前端开发

来自:奇舞周刊,作者:冯通

vue-cli 是我最喜欢的脚手架工具, 提供了很多开箱即用的功能, 每次新建一个项目, 我都会一路回车按下来, 唯独到这一步...

Setup e2e tests with Nightwatch?

每到此处, 我都会无情的选择 no, 这也是我唯一不使用默认配置的选项

那我们真的不会用 e2e tests 吗?

先来看一下 e2e 测试和 unit 测试有什么区别

分层的自动化测试

敏捷大师 Mike Cohn 提出了测试金字塔概念, 认为测试应该系分为不同的粒度

Martin Fowler 大师在此基础上提出分层自动化测试的概念, 也就是如图所示

分层自动化测试是这样分层的

  1. 单元测试 (unit tests)

  2. 服务接口测试 (service tests)

  3. 用户界面测试 (e2e tests)

单元测试和服务测试始终不是真实的使用场景, 真正能测到人机交互的只有UI测试

我们今天讨论的就是这个门槛最高, 成本也最大的金字塔顶端测试, 也称为 e2e 测试

-----------------------非常感谢这位大神的解释,可以省去很多纠结YES OR NO的时间----------------------

e2e 自动化测试

如何确定用户可以顺利走完流程呢? 一个流程可以很长

  1. 打开网页

  2. 浏览商品

  3. 加入购物车

  4. 下单确认

  5. 付款

单纯依靠人力来测试完整功能非常耗时耗力, 这时候自动化测试就体现价值了

自动化测试是把人的测试行为转化为机器执行的程序, 可以提高效率, 解放生产力, 节省人力成本和时间成本, 降低人类易出错的风险

现代比较流行的 e2e 测试框架有

  • Nightwatch

  • TestCafe

  • Protractor

  • WebdriverIO

  • Cypress

vue-cli 中使用 Nightwatch

Nightwatch 是一个老牌的 e2e 测试工具, 中文名"守夜者", 使用 W3C WebDriver API 协议来驱动浏览器

WebDriver 是各大浏览器都实现的通用标准, 这也使得它的兼容性特别好, 支持各大浏览器, 符合国情

如果在 vue-cli 中我们选择使用 e2e tests

vue-cli 会自动帮我们安装 selenium-server 和 chromedriver 等必要工具

哪怕你完全不懂 selenium, chromedriver 这些工具也可以尽情的写 e2e 测试, 开箱即用

在不久前发布的 vue-cli@3.0 中添加 Nightwatch

$ npm install nightwatch@1.0.8

运行 e2e 测试

$ vue-cli-service test:e2e

纯净的 WebDriver

要注意的是, vue-cli 目前依赖的还是 Nightwatch@0.9.x

我们看到 vue-cli 安装的 Nightwatch 会依赖一个 Selenium Server, 一个 java 程序

从官方示意图中看出, Nightwatch 和浏览器需要通过 Selenium Server 来通信

这让我们 js 程序员有点不爽, 既然 WebDriver 已经成为 W3C 推荐标准, 为什么不能跳过 Selenium 直接驱动浏览器呢?

答案是肯定的, 这也正是 Nightwatch@1.0 所做的是事情, 直接驱动浏览器

Nightwatch@1.0

Nightwatch@1.0 可以直接驱动浏览器, 因此我们直接安装 Nightwatch@1.0 即可, 无需 Selenium Server

$ npm install nightwatch@1.0.8

我们一起来学男朋友叫, 哦不~一起来写一个最迷你的端到端自动化测试

首先 Nightwatch 需要一个配置文件 nightwatch.conf.js

module.exports = {"webdriver": {"server_path": "/usr/bin/safaridriver", // 浏览器 driver 的 bin 执行路径"start_process": true, // 需要启动 driver"port": 9515 // driver 启动的端口, 一般是 9515 或 4444},"test_settings": {"default": {"desiredCapabilities": {"browserName": "safari" // 浏览器的名字叫 safari}}}
}

此处之所以使用 safaridriver 是因为 mac 系统已经内置了 safaridriver, 零安装成本

然后来写一个简单易懂的测试脚本 e2e.test.js

module.exports = {'Basic e2e Test' (browser) {browser.url('http://so.com') // 打开 so.com 网页.waitForElementVisible('body') // 确认能看到 body 元素.setValue('#input', 'Nightwatch') // 在搜索框输入 Nightwatch.click('#search-button') // 点击搜索.pause(1000) // 等待1秒钟.assert.containsText('#container', 'Nightwatch') // 查询结果包含 Nightwatch.end()}
}

执行一下看测试结果

$ nightwatch basic-e2e.test.js[Basic e2e Test] Test Suite
===========================
Running:  Basic e2e Test✔ Element <body> was visible after 17 milliseconds.
✔ Testing if element <#container> contains text: "Nightwatch".OK. 2 assertions passed. (3.419s)

测试通过, 嗨皮

各大浏览器 driver 安装

如果想用其他浏览器进行测试, 本文也列出了主流浏览器 driver 的下载地址

驱动浏览器的程序, 我们称为 driver

  • Chrome Driver: http://chromedriver.chromium.org/

  • Firefox GeckoDriver: https://github.com/mozilla/geckodriver

  • IE Driver: https://github.com/SeleniumHQ/selenium/wiki/InternetExplorerDriver, 支持IE7-IE11

  • Opera Driver: https://github.com/operasoftware/operaprestodriver

  • Safari 自带 SafariDriver: https://webkit.org/blog/6900/webdriver-support-in-safari-10/

要注意的是, vue-cli 目前绑定的还是 Nightwatch@0.9.x, 但 Nightwatch@1.0 已经在 beta 阶段了, vue 作者表示等到 Nightwatch 稳定后就会切到 1.0, 相信不远的将来我们会见到搭载 Nightwatch@1.0 的 vue-cli

转一篇关于安装vue脚手架 执行到安装demo:setup e2e tests with nightwacth 要不要选择NO的问题的解释相关推荐

  1. 关于npm和yarn 安装vue脚手架

    第一篇博客有点小紧张.轻喷~ 第一步:安装node.js       地址 --------https://nodejs.org/en/ 详细步骤这里就不写了    可以去看     地址 ----- ...

  2. Vue.js-Day03-AM【超级详细:Node.js环境安装、安装淘宝镜像(Win、Mac)、安装Vue脚手架、初始化Vue项目-命令解释(Vscode、命令行窗口)、目录介绍、Vue文件介绍】

    Vue.js实训[基础理论(5天)+项目实战(5天)]博客汇总表[详细笔记] 目   录 1.Node.js-环境安装 1.1.Node.js-详细安装步骤 2.vue-cli脚手架安装 2.1.安装 ...

  3. 使用npm安装vue脚手架

    通过npm安装vue脚手架 准备工作 安装node.js node.js中集成npm 下载地址:node下载连接 下载好后可以通过cmd命令查看是否安装成功 安装cnpm(可选) 由于有些npm资源被 ...

  4. 如何安装vue脚手架

    第一步,首先安装node.js 打开官网下载 | Node.js 选择对应的安装包,一直点next即可 第二步,安装vue脚手架 打开终端,通过win+R,输入cmd, 为了能更快的下载脚手架,可以安 ...

  5. Yarn安装vue脚手架

    npm简介 NPM是随同NodeJS一起安装的包管理工具,能解决NodeJS代码部署上的很多问题.由于新版的nodejs已经集成了npm,所以npm也一并安装好了. 特点: npm install 很 ...

  6. 安装vue脚手架创建项目

    1.安装node.js [nodejs官网](https://nodejs.org/en/) 2.安装cnpm 到这里node的环境已经安装完了,npm包管理工具也有了,但是由于npm的有些资源被墙, ...

  7. vue开发搭建(npm安装 + vue脚手架安装)

    一.概念 1.npm:  Nodejs下的包管理器. 2.webpack: 它主要的用途是通过CommonJS的语法,把所有浏览器端需要发布的静态资源,做相应的准备,比如资源的合并和打包. 3.vue ...

  8. npm——安装教程、安装vue脚手架(ASP.NET Core微服务(五)——【vue脚手架解析接口】过度章节)

    npm:是随同NodeJS一起安装的包管理工具,能解决NodeJS代码部署上的很多问题. 比如常用的有: 1)允许用户从NPM服务器下载别人编写的第三方包到本地使用. 2)允许用户从NPM服务器下载并 ...

  9. nodejs绿色版下载安装及配置淘宝镜像、安装vue脚手架

    目录 一.下载地址 二.安装 三.测试 四.环境配置 五.配置淘宝镜像 六.安装vue脚手架 一.下载地址 nodejs下载 详图: 二.安装 傻瓜式安装这里我就不多说了(一直点确定就完事了) 三.测 ...

最新文章

  1. rpc.ratatd安装过程中遇到的问题
  2. android崩溃日志收集
  3. 理解Promise (1)
  4. QT的QQmlProperty类的使用
  5. mac 环境变量设置
  6. 数据挖掘之关联分析六(子图模式)
  7. C# 调用 Microsoft.VisualBasic.Collection
  8. 产业区块链技术与服务提供商纸贵科技获得B+轮融资
  9. Atititcmd cli环境变量的调用设置与使用
  10. 筛选法求素数-c++
  11. 【编译原理总结】由正则式构造等价的DFA并将其最小化
  12. 独孤求败 —— 什么才是一个完整机器学习项目流程? 适合九成以上的场景
  13. Eclipse添加代码自动补全+对齐功能
  14. c语言程序安装软件,c语言程序下载软件
  15. 工作碰到的问题解决积累
  16. 【技术美术图形部分】图形渲染管线2.0-GPU管线概述几何阶段
  17. 解决Django migrate: Your models in app(s): ‘Mymodelclassname‘ have changes that are not yet reflected
  18. [蓝桥杯][2019年第十届真题]外卖店优先级、修改数组、糖果、特别数的和、等差数列
  19. UE4项目迁移----纯蓝图项目
  20. Vue 实现拖拽模块(一)拖拽添加组件

热门文章

  1. php 取字符串任意两个的中间部分,掐头去尾
  2. 计算机类国企门槛,大学生想进“国家电网”,3个条件缺一不可,少一个将与国企无缘...
  3. MTBF平均故障间隔时间
  4. 常用创建空对象创建对象方法var obj = {};其他几种方法你知道吗
  5. 移动游戏开打平台争夺战
  6. 2022-2028全球与中国无线电源接收器市场现状及未来发展趋势
  7. UOS系统下安装软件打不开的解决方法
  8. 【软考软件评测师】2020年下案例分析历年真题
  9. 吉信通php 短信配置,吉信通:手机APP为什么要用短信验证?
  10. springboot 启动 ApplicationContext applicationContext = null