代码之家  ›  专栏  ›  技术社区  ›  soccerway

Cypress.io如何读取Windows环境变量?

  •  2
  • soccerway  · 技术社区  · 6 年前

    {
    "QA_Server": "https://sometestingsite.com",
    "username": "testQA",
    "password": "Password1234!"
    }
    
    1 回复  |  直到 5 年前
        1
  •  7
  •   Diogo Rocha TomppaS    6 年前

    来自cypress文档 here :

    计算机上的任何环境变量 CYPRESS_ cypress_ 将自动添加并提供给您。

    冲突的值将覆盖 cypress.json cypress.env.json

    柏树会把树剥掉 添加环境变量时。

    从命令行导出cypress env变量:

    export CYPRESS_HOST=laura.dev.local
    
    export cypress_api_server=http://localhost:8888/api/v1/
    

    set setx 命令。

    在你的测试文件中你可以称之为:

    Cypress.env()             // {HOST: "laura.dev.local", api_server: "http://localhost:8888/api/v1"}
    Cypress.env("HOST")       // "laura.dev.local"
    Cypress.env("api_server") // "http://localhost:8888/api/v1/"
    
        2
  •  1
  •   Sasha Bond    4 年前

    为此,请将cy.exec与echo一起使用。如果在CMD'echo%appdata%'中运行,它将打印路径。我用包装纸把cy.exec包装成

    cy.runExec = (js) => {
      cy.log(`--- runnnig node ${js}`);
      cy.exec(js, { failOnNonZeroExit: false }).then((z) => {
        if (z.stderr != undefined) {
          cy.log(`--- stderr`);
          let lines = z.stderr.split("\n");
          for (let n in lines) cy.log(`--- ${n}: ${lines[n]}`);
        }
        if (z.stdout != undefined) {
          cy.log(`--- stdout`);
          let lines = z.stdout.split("\n");
          for (let n in lines) cy.log(`--- ${n}: ${lines[n]}`);
        }      
      });
    };
    

    如果你把它叫做 cy.runExec('echo %appdata%') ,它将在cypress输出中打印相同的路径,您可以修改此方法以仅获取标准输出。您还可以使用cy.wrap(…).as(…)保存该值,稍后再获取。

    cy.getWinEnv = (s) => {
      cy.exec(`echo %${s}%`, { failOnNonZeroExit: false }).then((z) => {
        let out = z.stdout != undefined ? z.stdout : "undefined";
        cy.wrap(out).as(s);
        //do not: return out;
      });
    };
    

    用法:

    //read %appdata%
    cy.getWinEnv("appdata");
    
    //log %appdata% in cypress
    cy.get("@appdata").then((x) => cy.log(`--- ${x}`));
    

    cy.getWinEnvEx = async (s) => {
      var out = "undefined yet";
      await cy.exec(`echo %${s}%`, { failOnNonZeroExit: false }).then((z) => {
        if (z == null) {
          cy.log("--- output is null");
        } else {      
          out = z.stdout != undefined ? z.stdout : "undefined";
          //cy.log(`--- z.stdout ${out}`);
        }
      });
      return out;
    };
    
    ...
    
    it("list windows variables", async () => {
      let z = await cy.getWinEnvEx("USERPROFILE");
      cy.log(`--- USERPROFILE ${z}`);
    });