Конечно, простое подключение, когда для каждого шага создается новое подключение к БД реализуется легко и этот способ вполне себе описан в документации.
import groovy.sql.Sql com.eviware.soapui.support.GroovyUtils.registerJdbcDriver("com.microsoft.sqlserver.jdbc.SQLServerDriver") def dbUrl='jdbc:sqlserver://<DBIp>\\<DBInstance>;databaseName=<DBName>' def sql = Sql.newInstance(dbUrl,'user','pass', 'com.microsoft.sqlserver.jdbc.SQLServerDriver') def row = sql.firstRow("select count(*) cnt from Table")log.info row.cnt
Но делать это в каждом шаге абсолютно не хотелось. Поэтому решил найти выход из данной ситуации. И таки нашел!
В явном виде soapUI, походу, глобальные переменные не поддерживает. Поэтому предлагается использовать context.
В результате инициализировать подключение к БД можно произвести в одном из следующих мест:
- Project LoadScript
- TestSuite ScriptSetup
- TestCase ScriptSetup
- TestCaseStep - Groovy Script
import groovy.sql.Sql if (context.sqlconn == null) { com.eviware.soapui.support.GroovyUtils.registerJdbcDriver("com.microsoft.sqlserver.jdbc.SQLServerDriver") def dbUrl='jdbc:sqlserver://<DBIp>\\<DBInstance>;databaseName=<DBName>'def sql = Sql.newInstance(dbUrl,'user','pass', 'com.microsoft.sqlserver.jdbc.SQLServerDriver') context.setProperty("sqlconn", sql) }
Для использования подключения в нужном шаге достаточно написать:
def row = context.sqlconn.firstRow("select count(*) cnt from Table")
log.info row.cnt
В четвертом случае необходимо внутри каждого тест-кейса создать GroovyScript TestStep с идентичным наполнением, т.е. таким же как и для SetupScript. Шаг может быть disabled.
А вот использование подключений будет отличаться:
testRunner.runTestStepByName("InitDatabaseConnScript") def row = context.sqlconn.firstRow("select count(*) cnt from Table")
log.info row.cnt
Связано, это с тем, что context "живет" только во время запуска всего кейса/сьюта/проекта, поэтому необходимо его "оживить" принудительно.
Т.е. при запуске всего тест-кейса можно пропустить строку runTestStepByName.
Поэтому пока производим отладку добавляем дополнительный шаг, когда тест работает, то можно перенести инициализацию в ScriptSetup и закрытие подключения в TearDown.
P.S. В soapUI API описаны методы runTestSuiteScriptSetup, runTestCaseScriptSetup etc., но как ими пользоваться пока не разобрался. Когда разберусь 4 вариант можно будет использовать в исключительных случаях :-)
Комментариев нет:
Отправить комментарий