搭建一个node.js项目 前端测试工具入门 jest puppeteer Cypress mocha_node.js jest mocha-程序员宅基地

技术标签: 前端  nodejs  

一 nodejs的安装

推荐去官网下载最新版本的,官网地址:https://nodejs.org/en/download/
依照系统版本下载即可,推荐window系统下载msi格式的。
下载下载直接安装下一步下一步。
安装成功了以后打开cmd

node -v

来检测是否安装成功

cnpm安装

由于我们被墙的厉害,所以使用npm下载模块时候会发现效率真的很慢,所以推荐淘宝的镜像,安装说明
推荐:

npm install -g cnpm --registry=https://registry.npm.taobao.org

安装cnpm,安装成功以后,将npm改成使用cnpm安装模块即可,简单,省事

二 新建项目

安装 express 框架

mkdir okadaGo
cd okadaGo
cnpm init -y
npm install express --save

启动项目

进入项目的根目录,建立一个 index.js 文件,并加入如下代码

var express = require('express');
var app = express();

app.get('/', function(res, rep) {
    rep.send('Hello, word!');
});

app.listen(3000);

然后在控制台中输入

node index.js

接着使用浏览器访问 http://localhost:3000/,就可以看到效果了

 

三 jest

mkdir okadaGo
cd okadaGo
cnpm init -y
(npm i jest -D 有点问题)

需要低版本的jest
如果安装错误

rm -rf node_modules

cnpm i [email protected] -D

cnpm run test

sum.js

function sum(a, b) {
  return a + b;
}
module.exports = sum;

sum.test.js

const sum = require('./sum');

test('adds 1 + 2 to equal 3', () => {
  expect(sum(1, 2)).toBe(3);
});

上述test的第一个参数可以自定义,用来打印信息,后边的expect().toBe()是期望执行结果

执行

修改package.json

{
  "scripts": {
    "test": "jest"
  }
}

cnpm run jest

效果图

在这里插入图片描述

Puppeteer 

const browser = await puppeteer.launch({
    //如果无法启动chrome,指定浏览器路径:executablePath,headless设置为false:可以看到浏览器
    executablePath:'C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe',
    headless: false, //可以看到打开浏览器效果,默认值true
    puppeteerOptions: {
      ignoreHTTPSErrors: true,
      dumpio: false,
    }
  });

 

四 puppeteer

安装 puppeteer

yarn add puppeteer
# or "npm i puppeteer"

可能会遇到 无法下载Chromium 问题

是因为在执行安装的过程中需要执行install.js,这里会下载Chromium,官网建议是进行跳过,我们可以执行 —ignore-scripts 忽略这个js执行

./node/npm i --save puppeteer --ignore-scripts

接下来我们需要去下载Chromium,windows的版本我这里已经下载好了,直接解压缩附件中的到 node_modules/puppeteer中就可以了。

执行下,我们创建一个文件index.js,文件内容

const puppeteer = require('puppeteer');

(async () => {
      const browser = await puppeteer.launch();
    const page = await browser.newPage();
    await page.goto('https://y.qq.com');
    await page.screenshot({path: 'yqq.png'});
    browser.close();
})();

这段代码会打开 https://y.qq.com 并截图,我们运行

node  index.js

如果看到目录下有生成图片y.qq.png的话,恭喜你,我们可以开始继续往下学习puppeteer了。

 

五 Cypress

    最近想学习下web ui测试框架,发现了比较好用的cypress,直接用js操作更方便更快。

一、开发环境

1. 安装cypress

cd projectpath                   # 工程目录
npm install cypress --save-dev   # 安装cypress

  Cypress安装完成后,可看到提示:You can now open Cypress by running: node_modules/.bin/cypress open,通过如下命令打开Cypress。正常可看到如下窗口,其中有许多cypress自带的例子可以参考。

node_modules/.bin/cypress open

2. 配置

在工程路径下创建package.json文件,配置以chrome浏览器运行用例。

{
  "scripts": {
    "cypress:open": "cypress open",
    "cypress:run": "cypress run --browser chrome"
  },
  "devDependencies": {
  }
}

cypress.json文件中添加如下内容,"chromeWebSecurity": false 解决chrome跨域问题;

reporter :cypress run会自动生成xml文件,使用 allure 生成对应报告。

{
        "chromeWebSecurity": false,
        "reporter": "junit",
        "reporterOptions": {
           "mochaFile": "results/my-test-output[hash].xml",
           "toConsole": true
        }
}

1. intellij idea 中打开之前的工程目录,可看到cypress的开发目录:

1) fixtures:自定义json文件

2) integration:编写测试用例

3) plugins:插件

4) support:目前未用到,需要自定义指令的时候可以深入研究

describe('My first test case for cypress',function(){
    it('visit baidu home page and search for testerhome:',function(){
        cy.visit('http://www.baidu.com') //访问url
        cy.title().should('contain','百度一下,你就知道')   //验证页面 title 是否正确
        cy.get('#kw')      //根据 css 定位搜索输入框
        .type('testerhome')        //输入关键字
        .should('have.value','testerhome')  //验证关键字自动是否展示正确
        cy.get('#su').click()   //根据 css 定位搜索按钮并点击
        cy.url().should('include','wd=testerhome')     //验证目标url 是否正确包含关键字
        cy.title().should('contain','testerhome_百度搜索')  //验证页面 title 是否正确
        cy.get('[id="1"]')   
        .should('contain','TesterHome')   // 验证第一个结果中是否包含TesterHome
        cy.screenshot()
    })
})

Cypress应用程序中,Cypress同步刷新目录,检测到新的改动马上运行。

可通过cypress run --browser chrome执行用例,或者cypress应用程序中,选中要执行的用例运行。

Cypress入门简单,且运行快,同时提供自动生成选取dom的语句,很方便。如下:

 

六 mocha

执行命令:

cnpm install mocha

验证npm和mocha的安装是否成功,执行命令如下图命令:

 test/test.js

var assert = require('assert');
describe('Array', function() {
  describe('#indexOf()', function() {
    it('should return -1 when the value is not present', function() {
      assert.equal(-1, [1,2,3].indexOf(4));
    });
  });
});

验证mocha是否安装成功,创建一个文件夹,例如test,然后进入该文件夹,创建文件test.js,由于之前把mocha路径设置在系统环境变量中,可以直接使用mocha test来运行文件。

还有另一种运行建立的测试用例。在test文件的外部建立一个文件:package.json,在文件中添加:

{
    { 
         "test":"mocha" 
     }
}

保存文件,执行命令:npm test,运行结果如下:

阮一峰 的博客 挺好的 点击链接在下面

 

转载地址:

https://blog.csdn.net/qq_30100043/article/details/78598520  npm的安装

https://www.jianshu.com/p/a6d430a00242 搭建nodejs项目

https://blog.csdn.net/qq_42813491/article/details/102845369 jest

https://github.com/facebook/jest/issues/10347  jest

https://cloud.tencent.com/developer/article/1006000  puppeteer

https://www.cnblogs.com/zhidong123/p/13345990.html  puppeteer

https://blog.csdn.net/angl129/article/details/90696251 Cypress

https://blog.csdn.net/henni_719/article/details/54377375 mocha

http://www.ruanyifeng.com/blog/2015/12/a-mocha-tutorial-of-examples.html mocha 阮一峰 关于mocha的测试案例的使用,讲的很好

https://www.ruanyifeng.com/blog/2015/03/react.html react 阮一峰 关于react博客讲的很好

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/tanghuan0827/article/details/111308313

智能推荐

新增同步管理、操作日志模块,支持公共链接分享,DataEase开源数据可视化分析平台v2.3.0发布_管理后台操作日志模块-程序员宅基地

文章浏览阅读1.5k次,点赞21次,收藏23次。数据源新增支持DB2数据源,图表新增支持透视表、指标卡。_管理后台操作日志模块

强化学习 - Monte Carlo Tree Search (MCTS)_强化学习 monte-carlo tree search-程序员宅基地

文章浏览阅读632次,点赞12次,收藏8次。强化学习中的Monte Carlo Tree Search (MCTS) 是一种用于决策制定和搜索的算法,特别在不确定环境下表现出色。_强化学习 monte-carlo tree search

jira任务导出excel-程序员宅基地

文章浏览阅读4.9k次。问题>我未完成的问题,搜索符合条件的任务更多:可以增加筛选条件;高级:可以自定义搜索条件(自己编写),一般不用;搜索条件:项目,类型(故事,故障,子任务等),状态(待办,处理中,IMPLEMENTING,TESTING,完成,已关闭等),经办人,解决结果(未解决,完成等),sprint,列表可以增加列:关键字(任务号),状态,问题类型,经办人,概要,等导出:CSV(当前域)>分隔符(,)csv调整为excel格式:新建一个excel>数据>导入数据>选择数

NRF24L01的最简配置_gnu radio录制的nrf24l01信号怎么调制-程序员宅基地

文章浏览阅读3.3k次,点赞2次,收藏4次。NRF24L01很多时候,我们不需要多么高级的设置,甚至只需要最简单的通讯即可,下面在刚上电(即插上电源)情况下的配置: 发送端: (1)hal_nrf_write_reg(0,0x0a); //该寄存器默认为0x08,直接上电即可,默认为发送模式 (2)hal_nrf_write_tx_payload(ch, 6); //ch为一字符串指针,这里必须为6字节,以对应接收数据宽度为6的设置_gnu radio录制的nrf24l01信号怎么调制

Mybatis-generator自动生成代码时提取自定义注释_mybatis-generator 导出comment-程序员宅基地

文章浏览阅读532次。在上篇文章中https://blog.csdn.net/yanyf2016/article/details/102972195生成的实体类没有数据库自己定义的注释,根据网上找到的资料以及阅读Mybatis-generator源码,发现可以通过自定义注释生成器 CommentGenerator 接口的实现类来达到我们的目的。通过阅读源码可以看到,代码生成注释是通过DefaultComm..._mybatis-generator 导出comment

yaml-cpp安装_libyaml-cpp.so.0.5-程序员宅基地

文章浏览阅读9.3k次。yaml是一种适合人类阅读的标记语言,主要用来标记hierarchy结构的数据。我所了解的C++阅读yaml的工具有OpenCV和yaml-cpp。这里以我的经验为例简单介绍yaml-cpp安装过程。_libyaml-cpp.so.0.5

随便推点

linux备份文件命令tar.gz,Linux系统tar命令备份数据-程序员宅基地

文章浏览阅读367次。作为Linux系统管理员,最经常使用的备份工具就是tar和cpio命令。前面在介绍备份介质时,已经使用了tar命令,此命令其实是一个文件打包命令,经常在备份文件的场合中使用。使用cpio命令进行数据备份,请阅读《Linux提取RPM包文件(cpio命令)》。有关tar命令的基本用法,请阅读《Linux tar压缩命令》一节,这里不再过多赘述。下面通过tar命令做的一个Web服务器的备份脚本,详细了..._tar czf old/${sysdate:0:8}_${sysdate:9:2}_${server}.tar.gz work/*

s7-1200跟mysql_西门子s7200smart和s7-1200的区别是什么,谁更有前景?-程序员宅基地

文章浏览阅读905次。展开全部1、S7-1200介于200和300之间。636f707962616964757a686964616f31333365633932性能比200强大很多。 西门子当初做200,是找日本外购的硬件,他一直想做自己的硬件即后来的1200。2、Smart 是为了满足中国市场的一些顽固人士准备的,或者是为了一些简单的很小的设备,为了降低成本准备。Smart是在200的基础上进行了升级,从名字就看的出..._s7-1200代替了西门子什么产品

一、前端请求后台方式-程序员宅基地

文章浏览阅读1.6k次。一、前端请求后台方式方法一:直接使用<%=%>调用前台JS:<script type = "text/javascript" > var methodStr = "<%=BehindMethod() %>";   alert(methodStr); </script>后台方法:public stati..._请通过前端地址访问后台

机器学习核心算法原理及应用-程序员宅基地

文章浏览阅读17次。机器学习核心算法原理及应用作者:禅与计算机程序设计艺术1. 背景介绍机器学习是当今计算机科学领域最为活跃和快速发展的分支之一。从简单的线性回归到复杂的深度学习神经网络,机器学习算法已经广泛应用于各个行业,推动了人工智能技术的快速进步。本文将深入探讨机器学习的核心算法原理,并结

Axure RP 9弹窗创建与实现【教程四】_axrue rp9 制作菜单弹出框-程序员宅基地

文章浏览阅读5.7k次,点赞2次,收藏9次。一、弹窗介绍弹窗就是在页面点击某个地方时,会在当前页面上出现一个窗口,我们可以在这个窗口上做些事。常见的弹框类型包括:删除提示,操作提示,选项数据查询等本次就以删除提示做个例子二、弹窗效果三、弹窗实现实现教程:①制作一个删除弹窗,可以是一个元件组合(本次就用这个),也可以是一个动态面板②给删除弹窗的关闭图标加上一个交互,交互是:单击之后隐藏删除弹窗③给列表的删除按钮加上一个交互,交互是:单击之后显示删除弹窗四、总结弹窗类的基本思路都是,对弹窗设置【隐藏、可见】的交互。可能不一样的就_axrue rp9 制作菜单弹出框

探索高效浏览:Tab-Groups - 智能标签管理器-程序员宅基地

文章浏览阅读350次,点赞5次,收藏3次。探索高效浏览:Tab-Groups - 智能标签管理器项目地址:https://gitcode.com/Quicksaver/Tab-GroupsTab-Groups 是一个创新的浏览器扩展,旨在提升你的网页浏览体验,通过组织和管理大量打开的标签页,让你的工作或学习更加有条理。这款开源项目基于WebExtension API,兼容Firefox、Chrome及Chromium内核的其他浏览器,...

推荐文章

热门文章

相关标签