如何在 Puppeteer 中设计用于测试的函数中的可重用代码?
How can I design reusable code in function for testing in Puppeteer?
我开玩笑地在 puppeteer 中进行代码测试:
如何在不重复代码的情况下为类似的登录测试创建可重用的函数?
describe('new user test', () => {
test('no existed user try', async() => {
browser = await puppeteer.launch(chromeOptions)
const page = await browser.newPage();
await page.goto("https://admin.manager.synthrone.com/")
await page.waitForSelector('#mat-input-0')
await page.type('#mat-input-0', 'test')
await page.type('#mat-input-1', 'pass')
await page.click('button')
您已经编写了一个有效的匿名回调函数,您只需要参数化一些需要的变量并为该函数命名。
这里有一个选择器和 url 作为参数的例子
async function loginTest(url, selectors){
const browser = await puppeteer.launch(chromeOptions);
const page = await browser.newPage();
await page.goto(url);
await page.waitForSelector('#mat-input-0');
await Promise.all(Object.keys(selectors).map(selector => page.type(selector, selectors[selector])));
await page.click('button');
await browser.close();
}
describe('new user test', () => {
test('no existed user try', () => loginTest("https://admin.manager.synthrone.com/", {'#mat-input-0': 'test', '#mat-input-1': 'pass'}));
test('some other test', () => loginTest("https://admin.manager.synthrone.com/", {'#mat-input-0': 'differentarg', '#mat-input-1': 'differentpass'}));
});
我开玩笑地在 puppeteer 中进行代码测试:
如何在不重复代码的情况下为类似的登录测试创建可重用的函数?
describe('new user test', () => {
test('no existed user try', async() => {
browser = await puppeteer.launch(chromeOptions)
const page = await browser.newPage();
await page.goto("https://admin.manager.synthrone.com/")
await page.waitForSelector('#mat-input-0')
await page.type('#mat-input-0', 'test')
await page.type('#mat-input-1', 'pass')
await page.click('button')
您已经编写了一个有效的匿名回调函数,您只需要参数化一些需要的变量并为该函数命名。
这里有一个选择器和 url 作为参数的例子
async function loginTest(url, selectors){
const browser = await puppeteer.launch(chromeOptions);
const page = await browser.newPage();
await page.goto(url);
await page.waitForSelector('#mat-input-0');
await Promise.all(Object.keys(selectors).map(selector => page.type(selector, selectors[selector])));
await page.click('button');
await browser.close();
}
describe('new user test', () => {
test('no existed user try', () => loginTest("https://admin.manager.synthrone.com/", {'#mat-input-0': 'test', '#mat-input-1': 'pass'}));
test('some other test', () => loginTest("https://admin.manager.synthrone.com/", {'#mat-input-0': 'differentarg', '#mat-input-1': 'differentpass'}));
});