Создайте монго-соединение и сделайте его живым для выполнения всего набора тестов в Ready!API
Если вы хотите сделать gmongo
соединение живо для всего набора тестов, а затем закройте его в операции разрыва после выполнения всего набора тестов. Как мы можем это сделать?
В настоящее время я делаю следующее: я создаю соединение для определенного шага теста, а затем после выполнения шага теста я закрываю соединение с помощью кода mongoClient.close()
Но теперь существует требование, когда мне нужно создать соединение до того, как набор тестов начнет выполняться, использовать одно и то же соединение во всем наборе тестов в тестовых примерах / шагах тестирования, а затем закрыть соединение после того, как весь набор тестов будет выполнен.
Может ли кто-нибудь сказать мне, как я могу сделать это с помощью Ready! API?
У меня может быть задержка звука, потому что я новичок в Ready API, поэтому, пожалуйста, потерпите меня. Этот код я использую для создания Соединения с mongo.
def dbUser = context.expand( '${#Project#MongoUser}' )
def dbPassword = context.expand( '${#Project#MongoPassword}' )
def dbServer = context.expand( '${#Project#MongoServer}' )
def dbDatabase = context.expand( '${#Project#MongoDatabase}' )
def credentials = MongoCredential.createCredential(dbUser,dbDatabase,dbPassword as char[])
def mongoClient = new MongoClient( new ServerAddress(dbServer),Arrays.asList(credentials) )
context.gmongo = new GMongo( mongoClient )
context.mongoDB = context.gmongo.getDB(dbDatabase)
Поэтому я использовал текущий код для создания соединения. На самом деле я хочу это как три набора тестов. Первый набор тестов будет содержать сценарий groovy для создания соединения, второй набор тестов будет содержать все мои тестовые случаи, а третий набор тестов будет содержать сценарий соединения монго закрытия.
Мы используем значения Environment из файла свойств. Здесь MongoServer имеет значения среды, в которой устанавливается соединение
Я не мог понять @Rao, как вы вызывали переменную conn внутри тестовых случаев. Особенно context.testCase.testSuite.db?.Connection часть. Что это "?" Обозначим и не могли бы вы сказать мне в вышеуказанном контексте, как можно выполнить процесс
1 ответ
Ниже сценария укажите, как вы добиваетесь того, что ищете в ReadyAPI / SoapUI
, Обратите внимание, что вы уже знаете, как подключиться к gmongo
в Groovy, который вам нужно добавить эту логику в заполнитель, следуя комментарию в строке.
Ниже приведен уровень тестового набора Setup Script
создать соединение БД.
class DatabaseDetails {
def server
def user
def password
def log
def getConnection() {
log.info 'connection created'
//Write logic to create connection
}
def closeConnection() {
log.info 'Closing connection'
//Write logic to close connection
}
}
//Change server, user, password values according to your environment
def db = [ server:'localhost', user:'dbuser', password: 'dbuserpasswd', log: log] as DatabaseDetails
if (!db.connection) {
db.connection
testSuite.metaClass.db = db
}
Ниже приведен уровень тестового набора TearDown Script
закрыть соединение дб. Поскольку это сценарий разрыва, соединение автоматически закрывается, как только выполнение набора тестов завершено.
testSuite.db?.closeConnection()
Теперь нет необходимости снова и снова создавать соединение с БД. Вам просто нужно использовать приведенный ниже скрипт в Groovy Script
шаг теста, чтобы получить существующее соединение БД.
def conn = context.testCase.testSuite.db?.connection
С помощью conn
переменная, вы должны быть в состоянии выполнить запросы.
Примечание: так как соединение БД выполняется в Setup Script
набора тестов, если вы просто запустите тестовый набор (т. е. набор тестов не будет вызван или выполнен), вы не сможете получить соединение. В таких случаях вручную выполните Setup Script
тестового набора.
РЕДАКТИРОВАТЬ: на основе редактирования OP к вопросу и его фрагмент кода, вот обновленный набор тестов Setup Script
, Это заботится о реализации getConnection()
а также closeConnection()
основанный на редактировании OP. Пожалуйста, добавьте / отредактируйте операторы импорта для классов Mongo, которые используются, поскольку я действительно не знаю об этом.
Обновлен скрипт установки Test Suite
import com.gmongo.*
import com.mongodb.*
class DatabaseDetails {
def context
def log
def mongoClient
def mongoDB
def getConnection() {
log.info 'Creating connection.'
//Write logic to create connection
if (!mongoDB){
def credentials = MongoCredential.createCredential(
context.expand('${#Project#MongoUser}'),
context.expand('${#Project#MongoDatabase}'),
context.expand('${#Project#MongoPassword}') as char[])
mongoClient = new MongoClient( new ServerAddress(context.expand('${#Project#MongoServer}')),Arrays.asList(credentials) )
mongoDB = new GMongo( mongoClient ).getDB(context.expand('${#Project#MongoDatabase}'))
}
mongoDB
}
def closeConnection() {
log.info 'Closing connection'
//Write logic to close connection
mongoClient.close()
}
}
def db = [ context: context, log: log] as DatabaseDetails
if (!db.connection) {
db.connection
testSuite.metaClass.db = db
}
Как упоминалось ранее, чтобы получить соединение, используйте приведенный ниже код и объясните его.
context.testCase.testSuite.db?.connection
Groovy имеет отличную функцию под названием ExpandoMetaclass. db
вводится в testSuite
класс и db
является объектом DatabaseDetails
класс, который мы создали и создали в Setup Script
тестового набора.
А также db
содержит getConnection()
т.е. db.getConnection()
который может так же, как db.connection
, Вот как соединение доступно в приведенном выше заявлении.