Cypress初体验之安装失败(Error: connect ETIMEDOUT 104.22.11.239:443)

本文介绍了Cypress自动化测试工具的安装过程及遇到的问题解决方法,包括通过代理解决安装失败问题,并提供了简单的测试案例。

安装

# Cypress安装非常简单
npm install cypress
# 原本以为安装是最简单的事,奈何事与愿违,安装时出现了问题 当然这个情况可能不是所有人都会遇到
# 下面先看下我遇到的问题

安装遇见的问题及处理方式

报错信息有点长,但不重要,只需看红框处即可
错误信息很明显,提示连接网站失败 查了下ip发现是米国的,所以这里连不上很正常
在这里插入图片描述

解决方案及过程

  • 看见url首先想到的是修改域名为国内下载地址
  • 通过全局搜索找到此域名代码出现在 cypress/lib/tasks/downloads第36行 如图
    在这里插入图片描述
    这里下载路径是拼接的,看了下国内仓的文件下载路径,差距略大,果断放弃

这时果断去官方仓的issues和官方文档看了看,问题解决方案都指向了代理
这里比较巧合的是我刚好也有,所以试了一下设置代理

"因为我的是linux系统,所以其他系统可能会不太一样 设置方法照着官方文档操作即可"
export HTTPS_PROXY=http://127.0.0.1:8889  # 端口在网络设置-代理里面查
设置后再试试 npm install cypress

在这里插入图片描述
问题解决

测试一下

 # 先启动一次cypress
 # package配置 "cypress:open": "cypress open"
 ./node_modules/.bin/cypress open
 #启动后项目下会多出一个默认文件夹 图放下面 图一
 #创建一个用例包e2e和用例baidu.cy.js 图二

图一
在这里插入图片描述
图二
在这里插入图片描述

打开baidu.cy.js写入如下测试代码

describe("cases title", () => {
    it('case title', () => {
        cy.visit('https://www.baidu.com')
        cy.title().should('include', '百度一下')
    })
    it('case1 title', () => {
        cy.visit('https://www.baidu.com')
        cy.title().should('include', '断言失败')
    })
    it('api case', () => {
        cy.request('http://www.baidu.com')
            .its('body')
            .should('include', '你就知道')
    })
})
// 执行结果如下图

在这里插入图片描述

小结

  • 关于很多人拿Cypress和selenium做对比,感觉没多大必要,毕竟存在即合理
  • 关于cypress同时支持ui和接口测试这点,感觉还不错
  • cypress用的js,代码方面也不难,入门应该挺快的,但是API挺多,需要花些时间熟悉
Cypress本身并直接支持连接ArangoDB数据库,因为它主要是用来测试前端应用程序的。如果你想在Cypress测试中涉及数据存取,通常的做法是通过API接口来间接地与数据库交互。 首先,你需要在你的项目中设置一个后端服务器,比如使用Node.js和Express,来作为Cypress与ArangoDB之间的桥梁。这样,后端服务器会暴露一个RESTful API,用于执行CRUD操作(创建、读取、更新、删除),包括从数据库查询数据和存储数据。 1. **建立后端API**: - 使用`axios`或其他HTTP客户端库发起对`http://10.200.90.84/`的请求,与ArangoDB进行交互。 - 创建路由处理GET、POST、PUT、DELETE等请求,对应查询数据、插入数据等操作。 ```javascript // server.js 或 api.js const express = require('express'); const axios = require('axios'); const app = express(); // 示例API,具体要替换为与ArangoDB的交互逻辑 app.get('/arango/data', async (req, res) => { try { const response = await axios.get('http://10.200.90.84/db/_api/document', { params: { collection: 'your_collection_name' }, }); res.send(response.data); } catch (err) { res.status(500).send(err.message); } }); // POST请求示例 app.post('/arango/data', async (req, res) => { try { const result = await axios.post( 'http://10.200.90.84/db/_api/document', req.body, { headers: { 'Content-Type': 'application/json' } } ); res.send(result.data); } catch (err) { res.status(500).send(err.message); } }); // 启动服务器 app.listen(3000, () => { console.log('API server started on port 3000'); }); ``` 2. **Cypress测试**: -Cypress测试中,你会调用上述API来与数据库交互,而是直接连接ArangoDB。例如,获取数据,可以使用`cy.intercept`拦截GET请求。 - 插入数据,可以通过POST请求向API发送数据,然后验证响应。 ```javascript // cypress/integration/database_test.js // 示例测试用例 describe('Database Interactions', () => { it('fetches data from ArangoDB', () => { cy.intercept('GET', '/api/arango/data', { method: 'get' }) .as('getDataFromApi'); cy.visit('/path/to/your-app'); // 假设这是你的应用入口 cy.wait('@getDataFromApi') .then((interception) => { const fetchedData = interception.response.body; // 验证数据 }); }); // 插入数据的测试类似 it('inserts data into ArangoDB', () => { const newData = {/* your data object */}; cy.intercept('POST', '/api/arango/data', { method: 'post' }) .as('postDataToApi'); cy.get('#your-form-element').submit(newData); cy.wait('@postDataToApi') .then((response) => { expect(response.statusCode).to.equal(201); // 验证成功插入 }); }); }); ``` 请注意,这只是一个简化示例,实际操作可能需要处理更多的错误处理和身份验证。在实际项目中,务必确保遵循安全最佳实践。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值