playwright/tests/utils/helpers.js
2025-03-04 17:13:49 +08:00

86 lines
2.1 KiB
JavaScript

/**
* 测试辅助函数集合
*/
const fs = require('fs');
const path = require('path');
const faker = require('faker');
/**
* 生成随机用户数据
* @returns {Object} 包含随机用户信息的对象
*/
function generateRandomUser() {
return {
username: faker.internet.userName(),
email: faker.internet.email(),
password: faker.internet.password(10),
firstName: faker.name.firstName(),
lastName: faker.name.lastName(),
phone: faker.phone.phoneNumber(),
address: {
street: faker.address.streetAddress(),
city: faker.address.city(),
zipCode: faker.address.zipCode(),
country: faker.address.country()
}
};
}
/**
* 等待指定时间
* @param {number} ms 等待的毫秒数
* @returns {Promise<void>}
*/
function sleep(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}
/**
* 从文件加载测试数据
* @param {string} filePath 数据文件路径
* @returns {Object} 测试数据对象
*/
function loadTestData(filePath) {
const fullPath = path.resolve(__dirname, '../../data', filePath);
try {
const data = fs.readFileSync(fullPath, 'utf8');
return JSON.parse(data);
} catch (error) {
console.error(`Error loading test data from ${fullPath}:`, error);
return {};
}
}
/**
* 生成唯一ID
* @param {string} prefix ID前缀
* @returns {string} 唯一ID
*/
function generateUniqueId(prefix = 'test') {
return `${prefix}_${Date.now()}_${Math.floor(Math.random() * 1000)}`;
}
/**
* 格式化日期
* @param {Date} date 日期对象
* @param {string} format 格式字符串
* @returns {string} 格式化后的日期字符串
*/
function formatDate(date = new Date(), format = 'YYYY-MM-DD') {
const year = date.getFullYear();
const month = String(date.getMonth() + 1).padStart(2, '0');
const day = String(date.getDate()).padStart(2, '0');
return format
.replace('YYYY', year)
.replace('MM', month)
.replace('DD', day);
}
module.exports = {
generateRandomUser,
sleep,
loadTestData,
generateUniqueId,
formatDate
};