Forum Discussion

geneticmaterial's avatar
3 years ago

Data generator question


our QA is writing some keyword tests and has asked for me to help provide a solution to give her a different name per keyword test. Sounds easy enough.

At project level, I have generated a list of 1000 firstnames and 1000 surnames using the 'Test > Generate Data' function, these were sent to file.

For each of these I have created a project level variable "from set" using each of those files so each data set has 1000 entries and set the 'generation mode' to random.

However, when I test this and use it in a setText operation it always gets the same value. As if the random selection of values is only ever done once.


Can anyone point me in the right direction?


I work with readyAPI and there's an almost identical function, however that DOES return a new value randomly from the set each call.


  • geneticmaterial's avatar
    3 years ago

    Figured it out:


    Project.Variables.randomFirst("randomFirst", Math.floor(Math.random() * 1154))

  • AlexKaras's avatar
    3 years ago



    Excuse me for the late reply...

    You have got correct solution.

    'Random' mode in the Data Generator just means that data will be generated in a random unordered sequence. But the resulting data table is accessed sequentially unless explicitly specified like in your code.


    Minor improvement if you don't mind: in order to get rid of hardcoded 1154 value you may use the code like this - 

    Math.floor(Math.random() * KeywordTests.CreateContactVerifyAndLogout.Variables.ListNames.RowCount));


7 Replies

  • What we are not doing here is data driven loops inside a single keyword test.

    Simply, a new first name and surname will be provided per keyword test so they are differentiated when they are in our backend.

    Hope that makes sense.

    • geneticmaterial's avatar

      Wow, this is infuriating! I've tried almost EVERY single variation of getting data from that data generator in a variable being held on the project variables and even the local variables on the keyword test and literally it always comes back with the same value!


      The only thing I can get to work here is instead of using a variable is to use setText operation and 'code execution' type using the following code:

      Math.random().toString(36).replace(/[^a-z]+/g, '').substr(0, 5)



      • brumazz's avatar
        SmartBear Alumni (Retired)

        How are you changing the input of the field you are trying to data drive?


        Could you provide a screenshot?