如何通过QML自动化测试访问本地sqlite数据库?

时间:2019-07-16 23:05:48

标签: sqlite qt qml

我有一个用C ++用QML编写的应用程序。我使用QML编写的Qt快速测试进行了自动UI测试。作为测试的一部分,我需要通过UI对SQLite数据库中的条目进行更改,并且我想使用简单的SQLite查询来验证对数据库所做的更改。

我希望能够使用QtQuick.LocalStorage或其他一些JavaScript SQLite库来执行此操作,但尚未找到解决方案。

QtQuick.LocalStorage似乎无法轻松打开现有的.db文件,并且似乎是为存储临时应用程序数据而设计的

SQL.js似乎很可能,但是由于将其打包为sql-asm.js和sql-wasm.js,因此我无法轻松地将功能导入到我的.qml测试文件中。

例如以下QtQuick示例:

import QtTest 1.2
import QtQuick.LocalStorage 2.9 as Sql

function test_database_connection(){
    var database = "../Database/d.db"
    db = Sql.openDatabaseSync(database, version, description, estimated_size, callback(db))
    db.transaction(function (tx) {
        var rs = tx.executeSql('SELECT * FROM Songs where id is "5" ');
    }
}

我希望这能打开我的数据库“ d.db”,并对其执行查询。相反,它似乎只是在某个地方创建一个新的空“ d.db”并运行查询。

有没有更简单的方法可以做到这一点?

1 个答案:

答案 0 :(得分:-1)

您可以使用以下命令 QSqlDatabase db = QSqlDatabase :: addDatabase(“ QSQLITE”); db = setDatabaseName(database);