cy.visit()和cy.request()的不同Cypress baseUrl

时间:2019-09-20 18:17:52

标签: cypress

我们在本地测试的应用程序具有一个前端和后端,它们分别在 localhost:4200 127.0.0.1:8000 上运行。

调用cy.visit('/somepage')时,我们希望baseUrlcy.request('/someapi')有所不同,因为cy.visit()将访问前端托管的页面,而{{1} }会向后端的API端点发出请求。

我们可以使用cy.request()baseUrl的默认cypress.json配置,但是有一种方法可以使cy.visit()的默认配置不同于默认的{{ 1}}是开箱即用的吗?尽量避免在整个地方都指定此位置,例如cy.request()。谢谢!

2 个答案:

答案 0 :(得分:1)

我认为您可以使用配置文件cypress.env.json来存储您的API网址,并从每个测试用例中获取它。

在您的cypress.env.json中

"apiUrl": "http://api"

在您的测试用例中

describe('get the api variable from config file', () => {
    //set up the variables
    const apiUrl = Cypress.env('apiUrl');
    cy.request(apiUrl + '/someapi');

答案 1 :(得分:0)

我不知道cypress中的一项功能,该功能允许为baseUrl分别配置不同的visitrequest

由于要摆脱为每次测试设置正确的API uri的样板,您还可以在cy.request周围编写自定义命令:

cypress / support / commands.js

import { API_URI } from '../constants';
// you may want to add a more suitable wrapper depending on the params/options you need to support.
Cypress.Commands.add('api', uri => cy.request(API_URI + uri));

your_spec.js

describe('Foor', () => {
  it('Baar', () => {
    cy.api('/someapi')...
  });
});

奖励提示:请注意,如果没有为cy.request()提供完全限定的域名(FQDN),则它会通过使用最后一个{ {1}}调用或作为赛普拉斯配置中的后备cy.visit。此答案的方法不受其影响,因为它总是设置FQDN。