我正在开玩笑地运行我的测试套件(后端为Node.js和express)。下面是我的代码:
Const puppeteer = require ('puppeteer');
Test ('testing login function', async () => {
const browser = await puppeteer.launch ({
headless: true,
args: ['--no-sandbox']
});
const page = await browser.newPage();
await page.type('#username', 'admin');
await page.type('#password', 'password');
await page.click('login-button');
await page.waitFor('.card');
expect(texthead).toEqual('Welcome to webpage');
await browser.close();
});
Run Code Online (Sandbox Code Playgroud)
我试图一次运行同一测试多次,是否有jestjs使用它的方法,或者也许使用其他工具。
Bra*_*ing 16
如果您正在寻找基本上可以对单个测试进行压力测试的东西(像我一样寻找测试的脆弱性),那么您可以在终端中使用以下单行代码,当然,它同时使用 bash 和 Jest。
for i in {1..100}; do npx jest <test_file> --silent || (echo 'Failed after $i attempts' && break); done
Run Code Online (Sandbox Code Playgroud)
此特定命令要求您已npx安装并使用该--silent选项,但您可以随意更改它。
小智 9
Jest 有一个内置方法可以使用.each(). https://jestjs.io/docs/api#testeachtablename-fn-timeout
如果要更改每个测试的参数,可以将测试参数数组传递给.each([1,2,3]). 如果不需要,只需用 null 填充数组即可。
test.each(Array(100).fill(null))('may be flaky test', async () => {})
这可以选择并行运行.concurrent
test.concurrent.each(Array(100).fill(null))('may be flaky test', async () => {})
如果您不想按顺序运行测试,则可以使用Promise.all. 这是一个关于如何重构代码的快速示例。
const runTheTest = async () => {
const browser = await puppeteer.launch ({
headless: true, args: ['--no-sandbox']
});
.......
return browser.close();
}
test('testing login function', async () => {
const testRuns = []
for (let index = 0; index < NUMBER_OF_RUNS; index++) {
testRuns.push(runTheTest())
}
return Promise.all(testRuns);
})
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1506 次 |
| 最近记录: |