如何在cy.request()中将fixture数据传入URL?
解决Fixture数据传入请求URL的问题
你的代码问题在于URL字符串里的{this.id}不会被自动解析为变量值,需要用模板字符串或者字符串拼接的方式将fixture中的id插入到URL中。以下是具体修改方案:
方案1:使用模板字符串(推荐)
将URL用反引号()包裹,变量用${变量名}`的形式插入,这样Cypress会自动解析变量值:
beforeEach(function() { // 改用function确保this上下文一致 cy.clearLocalStorage() cy.fixture('companyId.json').then(function (id) { this.id = id }) }) it('Test', function() { cy.request({ method: 'GET', // 用反引号和${}替换原有的{this.id} url: `https://abc.abc.com/admin/collection/${this.id}`, }).then((response) => { headerCookie = response.requestHeaders.cookie }) })
方案2:直接在测试用例中加载Fixture
如果不想依赖this上下文,也可以直接在it块内加载fixture,代码更直观:
it('Test', function() { cy.fixture('companyId.json').then((id) => { cy.request({ method: 'GET', url: `https://abc.abc.com/admin/collection/${id}`, }).then((response) => { headerCookie = response.requestHeaders.cookie }) }) })
注意事项
- 如果
companyId.json是对象格式(比如{"id": 12345}),需要调整取值方式,比如${this.id.id}或者${id.id}。 - 避免使用未声明的全局变量
headerCookie,可以改用Cypress.env('headerCookie', response.requestHeaders.cookie)存储,后续测试用Cypress.env('headerCookie')获取。
内容的提问来源于stack exchange,提问作者140218-M
相关产品推荐
相关产品推荐

