【问题标题】:How to pass values from command line to cypress spec file?如何将值从命令行传递到赛普拉斯规范文件?
【发布时间】:2021-05-05 14:40:10
【问题描述】:

我在几个不同的环境中运行赛普拉斯测试(即envAenvBenvC

我像这样运行测试:

npm run cypress:open -- --env apiEndpoint=https://app-envA.mySite.com

npm run cypress:open -- --env apiEndpoint=https://app-envB.mySite.com

npm run cypress:open -- --env apiEndpoint=https://app-envC.mySite.com

如您所见,apiEndpoint 因环境而异。

在我的一个赛普拉斯测试中,我正在测试一个值,该值会根据所测试的环境而变化。

例如:

expect(resourceTiming.name).to.eq('https://cdn-envA.net/myPage.html')

如您所见,文本 envA 出现在此断言中。

我面临的问题是,如果我在 envB 中运行此测试,它将像这样失败:

预期:expect(resourceTiming.name).to.eq('https://cdn-envB.net/myPage.html')

实际:expect(resourceTiming.name).to.eq('https://cdn-envA.net/myPage.html')

我的问题是 - 我如何更新规范文件,以便在不同环境中运行时断言正确的 URL?

我想知道是否有办法将值从命令行传递到规范文件以告诉规范文件我在哪个环境中,但我不确定这是否可能。

【问题讨论】:

    标签: cypress


    【解决方案1】:

    您可以在断言中直接使用Cypress.env('apiEndpoint'),这样无论您通过 CLI 传递什么,您的规范文件都具有相同的值 -

    expect(resourceTiming.name).to.eq(Cypress.env('apiEndpoint'))
    

    如果你想检查当你传递https://app-envA.mySite.com并且你期望在spec文件中的url是https://cdn-envA.net/myPage.html,你可以使用:

    expect(resourceTiming.name).to.eq(Cypress.env('apiEndpoint').replace('app', 'cdn').replace('mySite.com', 'net') + '/myPage.html')
    

    【讨论】:

      【解决方案2】:

      在我看来,您最好的选择是利用环境配置(envA.json、envB.json 等) 保持配置中的所有属性名称相同,然后根据环境应用值:

       // envA.json file
       "env": {
         "baseUrl": "yourUrlForEnvA.com"
       }
       // envB.json file
       "env": {
         "baseUrl": "yourUrlForEnvB.com"
       }
      

      这样,你可以在你的测试中调用 Cypress.env('baseUrl') ,无论如何,都应该加载正确的属性。

      您可以使用以下语法从命令行调用您的环境:

      "cypress run --config-file cypress\\config\\envA.json",
      

      这会设置测试运行以从一开始就获取正确的配置。 例如,调用 url 进行登录将类似于:

      cy.login(Cypress.env('baseUrl'))
      

      祝你好运!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-10-13
        • 1970-01-01
        • 2022-11-27
        • 2021-05-31
        • 2021-11-04
        • 1970-01-01
        相关资源
        最近更新 更多