Today we will see a less talked about and not so often used ‘Dictionary Object‘ in QTP. Note that, this is not something very QTP specific. Dictionary object was developed by Microsoft and is part of VB Scripting.

What is Dictionary Object?Dictionary Object

In simple terms, Dictionary object is similar to a typical array. The difference between a dictionary object and an array is that there is a unique key associated with every item of dictionary object. This unique key can help you in calling that item as and whenever required.

What is the syntax and how can we use dictionary object?

Shown below is a typical script.

Dim dict ' Create a variable.
Set dict = CreateObject("Scripting.Dictionary")
dict.Add "Company", "HP" ' Adding keys and corresponding items.
dict.Add "Tool", "QuickTest Pro"
dict.Add "Website", "LearnQTP"
dict.Add "Country", "India"

dict is an object of class Scripting.Dictionary. Company-HP, Tool-QuickTest Pro, Website-LearnQTP, Country-India are key-item pairs that were added using Add method on dict object.

Other methods available for dictionary object are Exists Method, Items Method, Keys Method, Remove Method, RemoveAll Method

Using Exists Method to check whether the key Country exists?

If dict.Exists("Country") Then
msg = "Specified key exists."
msg = "Specified key doesn't exist."
End If

Using Items and Keys method to retrieve ALL items and keys respectively from inside dictionary object.

i = dict.Items ' Get the items.
k = dict.Keys ' Get the keys.
For x = 0 To dict.Count-1 ' Iterate the array.
msgbox  i(x) & " :" & k(x)

Using Remove method to remove Website – LearnQTP pair from the object.


Using Remove all method to clear the dictionary

dict.RemoveAll ' Clear the dictionary.

What are the places where it can be used?

When you want to share data between different actions in a test, dictionary object can be used. To do this you should create a reserved test object for the Dictionary object. Here is a process to set up a reserved dictionary object. [Source]

  1. Open Window’s registry by opening a Run window and entering regedit.
  2. Navigate to HKEY_CURRENT_USERSoftwareMercury InteractiveQuickTest ProfessionalMicTestReservedObjects.
  3. Create a new key (folder) named GlobalDictionary by right-clicking on the ReservedObjects key and selecting New -> Key.
  4. Under the new key, create a String value named ProgID by right-clicking on GlobalDictionary and selecting New -> String Value.
  5. Assign “Scripting.Dictionary” to the new ProgID string value by right-clicking on ProgID and selecting “Modify.”
  6. If QTP window is already open you need to close and restart it.
  7. Now to check whether dictionary object was installed successfully in registry, simple write GlobalDictionary. (don’t forget the dot) and you should see a drop-down containing all methods and properties associated with dictionary object.

QTP Dictionary Object

Why dictionary object and why not array only?

As shown in the example above, dictionary object was used with the index (key) being string. In the case of array, the index can be ONLY numeric. Then of course we have some obvious advantages like referencing a value with a meaningful keys etc.

What are the other places where it can be used?

Alex Dinu has written a good article where he found the usefulness of dictionary  object. Microsoft has another nice article on where Dictionary Object can be used.

Over to you. Have you used dictionary object in the past? Why?

If you want to keep track of further articles on UFT (QTP). I recommend you to subscribe by Email and have new UFT articles sent directly to your inbox.

Subscribe to get free updates on UFT!

LearnQTP is the most popular site on UFT (formerly QTP).

Enter your first name and email address below to instantly subscribe and download an eBook on Optimizing UFT Scripts. In future, we will make sure you get new tips & tricks on UFT delivered direct to your email box.

Please check your email and confirm free subscription!