Tập lệnh dưới đây giải quyết cách bạn đạt được những gì bạn đang tìm kiếm trong ReadyAPI / SoapUI
. Lưu ý rằng bạn đã biết cách kết nối với gmongo
trong Groovy mà bạn cần thêm logic đó vào trình giữ chỗ bằng cách làm theo dòng nhận xét.
Dưới đây là cấp bộ thử nghiệm Setup Script
để tạo kết nối db.
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
}
Dưới đây là cấp bộ thử nghiệm TearDown Script
để đóng kết nối db. Vì điều này nằm trong tập lệnh rút gọn, nên kết nối sẽ tự động đóng ngay khi hoàn tất quá trình thực thi bộ thử nghiệm .
testSuite.db?.closeConnection()
Giờ đây, bạn không cần phải thực hiện lại bước tạo kết nối db mà chỉ cần sử dụng tập lệnh dưới đây trong Groovy Script
bước kiểm tra để lấy kết nối db hiện có .
def conn = context.testCase.testSuite.db?.connection
Sử dụng conn
, bạn sẽ có thể thực thi các truy vấn.
Lưu ý: Vì kết nối db được thực hiện trong Setup Script
của bộ thử nghiệm, nếu bạn chỉ chạy trường hợp thử nghiệm (tức là bộ thử nghiệm không được gọi hoặc thực thi), bạn có thể không nhận được kết nối. Trong những trường hợp như vậy, hãy thực thi thủ công Setup Script
của bộ thử nghiệm.
CHỈNH SỬA: Dựa trên chỉnh sửa của OP đối với câu hỏi và đoạn mã của anh ấy, đây là Setup Script
của bộ thử nghiệm được cập nhật . Điều này sẽ xử lý việc triển khai getConnection()
và closeConnection()
dựa trên chỉnh sửa của OP. Vui lòng thêm / chỉnh sửa các câu lệnh nhập cho các lớp Mongo được sử dụng vì tôi không thực sự biết về các lớp đó.
Tập lệnh thiết lập của bộ thử nghiệm đã cập nhật
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
}
Như đã đề cập trước đó, để có được kết nối, hãy sử dụng mã bên dưới và giải thích nó.
context.testCase.testSuite.db?.connection
Groovy có tính năng tuyệt vời được gọi là ExpandoMetaclass. db
được đưa vào testSuite
lớp và db
là đối tượng của DatabaseDetails
lớp mà chúng tôi đã tạo và khởi tạo trong Setup Script
của bộ thử nghiệm.
Và db
chứa getConnection()
tức là db.getConnection()
cũng có thể giống như db.connection
. Đó là cách kết nối có sẵn trong câu lệnh trên.