【发布时间】:2020-09-08 07:18:42
【问题描述】:
我创建了一些自动化测试来测试面向公众的 API 端点。有一个测试数据创建步骤,它直接在我们的 AWS 环境中运行和创建数据(即直接执行 Lambda,向数据库添加条目)。这是集成到 Cypress 中的,并在 package.json 中添加了一个包
要执行此操作,首先需要使用aws-sdk,特别是assumerole。当这个进程直接使用 Node 运行时,它会运行并用aws_access_key_id、aws_secret_access_key 和aws_session_token 填充~/.aws/credentials。
一旦担任此角色,就可以运行测试数据创建,并为测试创建数据。
使用 Node 和 Node 环境,这可以正常工作,并创建数据。
但是当它在 Cypress 中运行时,它会失败。
这是我的plugins/index.js:
const AWS = require('aws-sdk');
module.exports = (on, config) => {
AWS.config.update({
accessKeyId: process.env.AWS_ACCESS_KEY_ID,
secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY,
sessionToken: process.env.AWS_SESSION_TOKEN,
region: process.env.AWS_REGION
});
return { on, config };
};
由于测试数据创建过程是异步的,我在support/commands.js 中添加了这个异步命令:
const testDataCreation = require('test-data-creation');
Cypress.Commands.add("generateOrganisation", async () => {
await testDataCreation.generateOrganisation();
});
在我的测试中:
describe('Test', () => {
before(function () {
cy.generateOrganisation().then(response => response.organisationId).as("orgId");
});
it('should visit the page', function () {
cy.visit(`https://${this.orgId}.website.com/`);
cy.get('#cookie-box').should('have.class', 'my-cookie');
});
});
但是当测试运行时,测试失败并显示消息 “ConfigError: Missing region in config”。这是 AWS 配置未正确设置时的典型消息。这让我认为赛普拉斯无法使用假定的 AWS 角色正确运行测试。或者也许我做错了什么。我猜测它应该“正常工作”(例如如何使用 Node 运行测试数据创建脚本)。 如何从赛普拉斯运行需要 AWS 凭证的设置步骤(即创建测试数据)?
【问题讨论】:
标签: amazon-web-services automation cypress qa