【问题标题】:cy.readFile results in timeout?cy.readFile 导致超时?
【发布时间】:2019-02-06 16:26:12
【问题描述】:

我正在尝试读取我刚刚在同一个 cypress 项目中使用另一个测试编写的 JSON 文件。但是,当它尝试读取文件时,它会在 4000 毫秒后超时。

以前有人经历过吗?我该如何解决?

我尝试通过给它一个设置对象来增加超时,但这不会增加超时时间。我认为这可能是文件权限问题,但似乎也不是。

我在 Mac 上运行,但在 Windows 上尝试了相同的项目,结果相同。

  before('grab generated user data', function (){
      let data = cy.readFile("Generated User/Cypress test 131.json", {log:true, timeout: 180000});
}

我希望它只返回解析的 JSON 对象。正如赛普拉斯文档中所说。 (https://docs.cypress.io/api/commands/readfile.html#Syntax)

【问题讨论】:

    标签: node.js file cypress


    【解决方案1】:

    1.您的文件应该在cypress.json文件所在的项目目录中。

    2.您的文件名应为Cypresstest131.jsonCypress-test-131.json

    before('grab generated user data', function (){
        let data = cy.readFile("Cypresstest131.json", {log:true, timeout: 4000});
         data.its('name').should('eq', 'Eliza')
    })
    

     before('grab generated user data', function (){
            cy.readFile("Cypress-test-131.json", {log:true, timeout: 4000}).its('name').should('eq', 'Eliza')
        })
    

    希望对你有帮助

    【讨论】:

    • 我试过你的答案,不幸的是问题仍然存在
    • 是的,我是。还有其他可能导致错误的原因吗?
    • 我将使用不同的方法来解决问题。感谢您的帮助
    【解决方案2】:

    我最终使用 cy.createFileSync() 创建了一个 data.json。当我想读取文件而不是使用 cypresses cy.readFile() 函数时,我创建了一个使用 fs 库读取文件的 cypress 任务。

    我将把我用来读取文件的任务的代码片段留给你。

    const fs      = require('fs');
    const request = require('request');
    
    module.exports = (on, config) => {
        on('task', {
            //  Cypress task to get the last ID
            getLastId: () => {
                //  Make a promise to tell Cypress to wait for this task to complete
                return new Promise((resolve) => {
                    fs.readFile("data.json", 'utf8', (err, data) => {
                        if (data !== null && data !== undefined) {
                            data = JSON.parse(data);
                            if (data.hasOwnProperty('last_id')) {
                                resolve(data.last_id);
                            } else {
                                resolve("Missing last_id");
                            }
                        } else {
                            resolve(err);
                        }
                    });
                });
            }
    

    调用这个函数就像

     let id = 0;
    
                before('grab generated user data', function (){
                    cy.task('getLastId').then((newID)=>{
                        id = newID;
                    });
                });
    

    【讨论】:

      猜你喜欢
      • 2018-05-16
      • 2016-09-24
      • 2021-10-24
      • 2012-11-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-08
      相关资源
      最近更新 更多