[front-end] 测试 e2e

本文介绍了 Nightwatch 的基本配置与使用方法,包括如何通过配置文件指定测试逻辑、WebDriver 和 dev 的设置,以及如何集成 Mocha 等其他测试框架。此外还探讨了 Vue CLI 中 Nightwatch 的集成方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近好玩,根据vue-cli里的e2e看了下nightwatch的使用
之后有空研究下内部原理

night watch

官网照片
night watch本身只是一个测试框架而已。如图,webdriver与dev都不是night watch的内容,因此需要在配置文件中指定。night watch中则包含测试逻辑。
当然,night watch也可以包含其他测试框架,比如mocha,通过配置文件中的test_runner设置即可。
google前几的教程以及官网都太过于系统化了,只讲了两个部分各自的配置,没有具体说明每部分配置的意义和逻辑。
题外话:night watch的官网真是够烂的

配置文件

官网
嗯,官网的东西就是写的没有人看得懂
简单的说,配置文件nightwatch.conf.js(nightwatch.json)包含三大部分
1. basic
night watch 本身的配置,最主要的是src_folders,作为测试文件的入口文件夹
2. server
默认使用的是selenium,官网给的是java下的jar,但是在使用中可以采用selenium-server库
配置文件如下

    selenium: {
        start_process: true,
        server_path: require('selenium-server').path
    }

server_path也可以采用java下的selenium包,甚至是其他环境下的selenium包。甚至可以不需要selenium来启动webdriver服务。
3. test
test配置了各项test runner内容,默认采用default,也可在命令行中采用--env environment设置

测试文件

官网
测试文件放在nightwatch.conf.js中src_folders下
形式如

module.exports = {
  'default e2e tests': function (browser) {
    browser
      .url('http://localhost:3000')
      .assert.elementPresent('#trigger')
      .assert.containsText('#clear', 'clear')
      .end()
  }
}

测试时night watch会找到文件夹下所有.js测试文件,并对其中暴露的所有方法进行测试
断言及api语法

测试

官网压根就没说,也是很优秀了
1. cli方式

node_module/.bin/nightwatch file.js --config configfile.js --env chrome

如果不加--config会默认为根目录的nightwatch.conf.js
如果不加--env会默认为’default’
因此

node_module/.bin/nightwatch

会默认读取./nightwatch.conf.js,从中读取入口文件夹,根据其中的.js文件进行测试
2. 文件方式
vue-cli采用了文件方式起了一个子线程来跑测试,核心部分如下

let opts = [];
if (opts.indexOf('--config') === -1) {
  opts = opts.concat(['--config', 'nightwatch.conf.js']);
}
if (opts.indexOf('--env') === -1) {
  opts = opts.concat(['--env', 'chrome']);
}

const spawn = require('cross-spawn');
const runner = spawn('./node_modules/.bin/nightwatch', opts, {
  stdio: 'inherit'
});

runner.on('exit', function(code) {
  process.exit(code);
});

runner.on('error', function(err) {
  throw err;
});

这段是起测试服务的核心代码,本质就是起了一个子线程。vue-cli的这种方式是为了在起测试之前先起prod-server服务,同时能将一些config文件给抽离出去

puppeteer

严格来说puppeteer与night watch并不是并列的,在night watch图中最右侧的部分采用的是phantomjs,可以使用puppeteer代替
不过自己用的时候感觉pupeteer本身就可以做一个e2e测试库了
晚上回去接着写吧。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值