我们在本地测试的应用程序具有一个前端和后端,它们分别在 localhost:4200 和 127.0.0.1:8000 上运行。
调用cy.visit('/somepage')
时,我们希望baseUrl
与cy.request('/someapi')
有所不同,因为cy.visit()
将访问前端托管的页面,而{{1} }会向后端的API端点发出请求。
我们可以使用cy.request()
中baseUrl
的默认cypress.json
配置,但是有一种方法可以使cy.visit()
的默认配置不同于默认的{{ 1}}是开箱即用的吗?尽量避免在整个地方都指定此位置,例如cy.request()
。谢谢!
答案 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
分别配置不同的visit
。 request
。
由于要摆脱为每次测试设置正确的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。