MongoDB backend

Does anyone know if there is a way to hook up a MongoDB Database to a test? I see in the Data Files that I can add a data base, but this seems to only be SQL based.

I’m going to try to do it through script in the editor, but just wanted to know if there was some built in way to do it first.

Thanks!

No way that I figured out. I just linked the mongoDB Java driver to the test and everything works just fine

1 Like

Hi Will York,
i am starting to read and write to Mongo. Currently i am using SQL db and working fine but i am new on connecting to Mongdb. In here, you seems to have succeeded in doing so, could i request for details on whats needed to coded ? i am using groovy… TIA

the tricky bit with mongo is how to find documents that have UUID in them…ive posted how ive manage to do it here

@ChewJin Koh

install the mongodb driver and connect to the mongo db through that…something like this

import com.mongodb.client.MongoCursor

import com.mongodb.MongoClient

import com.mongodb.BasicDBObject

import com.mongodb.DBObject

import com.mongodb.DBCursor

import com.mongodb.MongoCredential as MongoCredential

import com.mongodb.client.MongoCollection

import com.mongodb.client.MongoDatabase

import com.mongodb.MongoClientURI

import com.mongodb.client.result.DeleteResult

import com.mongodb.client.FindIterable

public class dataBaseMethods {

public static Connection connection

public static MongoDatabase db

public static MongoClient mongoClient

@Keyword

def mongoInitialize(String strConnectionString,String Database,String firstCollection){

mongoClient = null

String ClientURI = strConnectionString

MongoClientURI uri = new MongoClientURI(ClientURI)

mongoClient = new MongoClient(uri
db = mongoClient.getDatabase(Database)
MongoIterable collections = db.listCollectionNames()
}

1 Like

Will_York, since you was successful in connection and querying with MongoDB - can you share with me code sample (or custom keyword) with all your imports? TIA!

can somebody post an example how to connect to a mongoDB ?

1 Like

Hey!

Using Mongo java driver 3.6.3 and bson 3.6.3 jar but can’t get past the error below:

com.mongodb.MongoQueryException: Query failed with error code 10307 and error message ‘’ on server aws-us.dblayer.com:14432
at com.mongodb.operation.FindOperation$1.call(FindOperation.java:722)
at com.mongodb.operation.FindOperation$1.call(FindOperation.java:711)
at com.mongodb.operation.OperationHelper.withConnectionSource(OperationHelper.java:471)
at com.mongodb.operation.OperationHelper.withConnection(OperationHelper.java:415)
at com.mongodb.operation.FindOperation.execute(FindOperation.java:711)
at com.mongodb.operation.FindOperation.execute(FindOperation.java:83)
at com.mongodb.Mongo$3.execute(Mongo.java:826)
at com.mongodb.MongoIterableImpl.execute(MongoIterableImpl.java:130)
at com.mongodb.MongoIterableImpl.iterator(MongoIterableImpl.java:77)
at com.mongodb.MongoIterableImpl.forEach(MongoIterableImpl.java:100)
at com.mongodb.client.MongoIterable$forEach$0.call(Unknown Source)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:48)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:113)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:125)
at Connection.mongoInitialize(Connection.groovy:140)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:93)
at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:325)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1215)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1024)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:812)
at groovy.lang.DelegatingMetaClass.invokeMethod(DelegatingMetaClass.java:144)
at Connection.invokeMethod(Connection.groovy)
at com.kms.katalon.core.main.CustomKeywordDelegatingMetaClass.invokeStaticMethod(CustomKeywordDelegatingMetaClass.java:49)
at org.codehaus.groovy.runtime.callsite.StaticMetaClassSite.call(StaticMetaClassSite.java:53)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:48)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:113)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:117)
at Script1553949590500.run(Script1553949590500.groovy:20)
at com.kms.katalon.core.main.ScriptEngine.run(ScriptEngine.java:194)
at com.kms.katalon.core.main.ScriptEngine.runScriptAsRawText(ScriptEngine.java:119)
at com.kms.katalon.core.main.TestCaseExecutor.runScript(TestCaseExecutor.java:336)
at com.kms.katalon.core.main.TestCaseExecutor.doExecute(TestCaseExecutor.java:327)
at com.kms.katalon.core.main.TestCaseExecutor.processExecutionPhase(TestCaseExecutor.java:306)
at com.kms.katalon.core.main.TestCaseExecutor.accessMainPhase(TestCaseExecutor.java:298)
at com.kms.katalon.core.main.TestCaseExecutor.execute(TestCaseExecutor.java:232)
at com.kms.katalon.core.main.TestCaseMain.runTestCase(TestCaseMain.java:114)
at com.kms.katalon.core.main.TestCaseMain.runTestCase(TestCaseMain.java:105)
at com.kms.katalon.core.main.TestCaseMain$runTestCase$0.call(Unknown Source)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:48)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:113)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:149)
at TempTestCase1557890438666.run(TempTestCase1557890438666.groovy:21)
at groovy.lang.GroovyShell.runScriptOrMainOrTestOrRunnable(GroovyShell.java:263)
at groovy.lang.GroovyShell.run(GroovyShell.java:518)
at groovy.lang.GroovyShell.run(GroovyShell.java:507)
at groovy.ui.GroovyMain.processOnce(GroovyMain.java:653)
at groovy.ui.GroovyMain.run(GroovyMain.java:384)
at groovy.ui.GroovyMain.process(GroovyMain.java:370)
at groovy.ui.GroovyMain.processArgs(GroovyMain.java:129)
at groovy.ui.GroovyMain.main(GroovyMain.java:109)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.codehaus.groovy.tools.GroovyStarter.rootLoader(GroovyStarter.java:109)
at org.codehaus.groovy.tools.GroovyStarter.main(GroovyStarter.java:131)

Hi

Anyone has update on mongodb usage with Katalon.

~~ Thanks

Do you have any update on this ?

i keep getting errors on all the mongdb imports. were you able to get passed this?

How do you input your mongo query?

you need mongodb driver

Download the MongoDB driver from: https://repo1.maven.org/maven2/org/mongodb/mongo-java-driver/3.9.1/

Does anyone able to get it worked in their Katalon projects?

I created a Keyword to connect to MongoDB using below code:

import com.mongodb.client.MongoClients;
import com.mongodb.client.MongoClient;
import com.mongodb.MongoClientSettings;
import com.mongodb.ConnectionString;
import com.mongodb.ServerAddress;
import com.mongodb.MongoCredential;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import org.bson.Document;
import com.mongodb.client.FindIterable;

public class DBConnection {   	
	@Keyword
	def connectMongoDB(String mongoURI, String dbase, String collectionName) {
		
		// Creating a Mongo client
		MongoClient mongoClient = MongoClients.create(mongoURI)
		
		// Accessing the database
		MongoDatabase database = mongoClient.getDatabase(dbase)
		println("\nConnected Successfully to Database: " +database)
		
		// Retrieving collections
		println('\nList of DB Collections in Database - "'+dbase+'" are: ');
		for (String collectionList : database.listCollectionNames()) {
			println("--	"+collectionList)
		}
	
		// Connect to a Collection
		MongoCollection<Document> collection = database.getCollection(collectionName);
		println("\nConnected Successfully to Collection: " +collection)
}

Was able to connect to database successfully.
From here if wanted to create new Keywords (ex: getDocbyID ; getDocbyName etc) to get documents from above connected collection how do I do that? How do I use the above connected collection for next keyword?

For example next Keyword could be:

@Keyword
	def getDocumentByID(String OrgID) {
		//MongoCollection<Document> collection = connectMongoDB)()
		Document Org = collection.find(new Document("OrgID", 1)).first();
		println("Organization Doc: " + Org.toJson());
	}
2 Likes

any ideas?

@nagendra.kuppala, how are you? did you manage to create the keywords getDocbyID, getDocbyName etc?