You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Playwright脚本连接Vertica DB无查询结果输出问题求助

问题:Playwright中Vertica数据库查询结果日志不显示

我是Playwright新手,需求是连接Vertica数据库、获取所需记录并与UI数值对比。单独使用Node.js代码可成功连接数据库并输出查询结果,但将相同逻辑移入Playwright脚本后,无法看到查询结果的控制台日志,请求协助排查原因。

成功的单独Node.js代码

console.log("Hello")
console.log("Entering the test")

const {Client} = require('vertica-nodejs')
const connectionString = 'vertica://'
                        + 'xxx' + ':'
                        + 'xyz' + '@'
                        + 'abcdefg' + ':'
                        + 5433 + '/'
                        + 'abc';
const client = new Client({
    connectionString,
});
client.connect()
client.query("SELECT 'success' as connectionWithString", (err, res) => {
    console.log(err || res.rows[0])
    client.end()
})

输出

PS C:\Stab\Automation\ConnectVertica> node .\temp.js
Hello
Entering the test
{ connectionWithString: 'success' }
PS C:\Stab\Automation\ConnectVertica>  

Playwright脚本代码

import { test, expect } from '@playwright/test';

const {Client} = require('vertica-nodejs')
const connectionString = 'vertica://'
                        + 'xxx' + ':'
                        + 'xyz' + '@'
                        + 'abcdefg' + ':'
                        + 5433 + '/'
                        + 'abc';
const client = new Client({
    connectionString,
});

async function connectAndQuery() {
 try {
 console.log("Connecting to Vertica DB")
 await client.connect();
 const res = await client.query("SELECT 'Connection successful' as message");
 console.log(res.rows[0]);
 } catch (err) {
   console.error(err);
 } finally {
 await client.end();
 }
 } 
 test('test db connection', async () => {
 connectAndQuery();
 });

输出

Running 1 test using 1 worker
[chromium] › tests\testVertica.spec.js:25:5 › test db connection
Connecting to Vertica DB
  1 passed (3.9s)

原因分析及解决方案

核心原因

你在Playwright的test函数中调用异步函数connectAndQuery()时没有添加await关键字。Playwright的测试用例本身是异步执行的,如果不等待异步函数完成,测试会直接结束,根本等不到数据库查询完成和日志输出的时机。

修复方案

修改测试用例代码,在调用connectAndQuery()前加上await,确保测试等待数据库操作执行完毕:

test('test db connection', async () => {
  await connectAndQuery(); // 添加await
});

额外优化建议

  1. 避免全局数据库客户端实例:建议将数据库客户端的初始化放到test函数内部,或者使用Playwright的test.beforeEach/test.afterEach钩子,防止多个测试用例复用同一个客户端实例引发连接问题。
  2. 使用Playwright内置日志:如果需要日志和测试报告更好地整合,可以使用test.info().log()替代console.log(),日志会显示在测试报告的对应测试用例下:
    test.info().log(res.rows[0]);
    

内容的提问来源于stack exchange,提问作者MIM

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 04:11:16