Page 1 of 1

How to bind varables to Code module from Excel file

Posted: Mon Jul 01, 2019 7:55 am
by avi6666
How to bind variables to Code module from Excel file

i have situation where i have bind variables (column) form excel file to variables in code module

like

[TestVariable("379125e8-cc81-4051-9e88-0a0f48515f18")]
public string Printformat
{
get { return _Printformat; }
set { _Printformat = value; }
}

[TestVariable("c530e178-dbf8-4c16-a262-d07d9dc16f82")]
//for image comparison printValidate= "Contains|C:\\TestData\\TestPrint\\bmp2.bmp"
//for pdf text comaprison printValidate="Dr Test Practitioner|Ms Testadult Prescriptionceasemedication|PARACETAMOL DROPS 100mg/mL"
public string PrintVerify
{
get { return _PrintVerify; }
set { _PrintVerify = value; }
}

i want bind this two from excel

in suite level, it showing me to bind and i did it.



but i build it shows error
variables doesn't exist in current context

can anyone please help me out ???

Re: How to bind varables to Code module from Excel file

Posted: Mon Jul 01, 2019 8:41 am
by odklizec
Hi,

Please post entire code module. Without seeing your failing code, there is no way to tell what's wrong. My best guess is that the variable is used incorrectly in you code? Also, what Ranorex version do you use?

Re: How to bind varables to Code module from Excel file

Posted: Mon Jul 01, 2019 11:58 am
by avi6666
string _PrintVerify;
[TestVariable("c530e178-dbf8-4c16-a262-d07d9dc16f82")]
public string PrintVerify
{
get { return _PrintVerify; }
set { _PrintVerify = here i want to get value from excel sheet bounded variable and set it ; }
}


set { _PrintVerify = here i want to get value from excel sheet bounded variable and set it ; }

Re: How to bind varables to Code module from Excel file

Posted: Mon Jul 01, 2019 2:07 pm
by odklizec
Hi,

You must declare new variable anywhere before Run section. So the code module should look like this:

Code: Select all

/*
 * Created by Ranorex
 * User: pkudrys
 * Date: 01/07/2019
 * Time: 14:54
 * 
 * To change this template use Tools > Options > Coding > Edit standard headers.
 */
using System;
using System.Collections.Generic;
using System.Text;
using System.Text.RegularExpressions;
using System.Drawing;
using System.Threading;
using WinForms = System.Windows.Forms;

using Ranorex;
using Ranorex.Core;
using Ranorex.Core.Testing;

namespace RPDashboard.CodeModules
{
    /// <summary>
    /// Description of TestCodeModulWithVariable.
    /// </summary>
    [TestModule("AD604456-9CD5-48FE-8006-32A2F72F6A7B", ModuleType.UserCode, 1)]
    public class TestCodeModulWithVariable : ITestModule
    {
   
        /// <summary>
        /// Constructs a new instance.
        /// </summary>
        public TestCodeModulWithVariable()
        {
            // Do not delete - a parameterless constructor is required!
        }

        string _varXYZ = "";
	    [TestVariable("2b46b416-cd6c-4c71-88b4-828bb3317560")]
	    public string varXYZ
	    {
	    	get { return _varXYZ; }
	    	set { _varXYZ = value; }
	    }     
        /// <summary>
        /// Performs the playback of actions in this module.
        /// </summary>
        /// <remarks>You should not call this method directly, instead pass the module
        /// instance to the <see cref="TestModuleRunner.Run(ITestModule)"/> method
        /// that will in turn invoke this method.</remarks>
        void ITestModule.Run()
        {            
            Mouse.DefaultMoveTime = 300;
            Keyboard.DefaultKeyPressTime = 100;
            Delay.SpeedFactor = 1.0;
            Report.Log(ReportLevel.Info, "varXYZ:" + varXYZ);
        }
    }
And then you should be able to bind the code module's variable with excel data connector of your choice.

Re: How to bind varables to Code module from Excel file

Posted: Tue Jul 02, 2019 5:32 am
by avi6666
I did the same as you have mentioned

string _varXYZ = "";
[TestVariable("2b46b416-cd6c-4c71-88b4-828bb3317560")]
public string varXYZ
{
get { return _varXYZ; }
set { _varXYZ = value; }
}

my doubt

set { _varXYZ = value; }

what happens in the above statement, value get the data from excel column and assigns it the variable ???

becoz i did the same

string _PrintVerify = " ";
public string PrintVerify
{
get { return _PrintVerify; }
set { _PrintVerify = PrintVerify; }
}

and i binded excel data from suite level , when i build it says error as variables doesn't exist in current context

Re: How to bind varables to Code module from Excel file

Posted: Tue Jul 02, 2019 7:56 am
by odklizec
Hi,

Please post your code module (entire source). I'm sure there is something wrong in the way you apply the module variable?

Re: How to bind varables to Code module from Excel file

Posted: Tue Jul 02, 2019 10:21 am
by avi6666
attached code file

Re: How to bind varables to Code module from Excel file

Posted: Tue Jul 02, 2019 11:22 am
by avi6666
/*
* Created by Ranorex
* User: tester
* Date: 29/09/2016
* Time: 1:34 PM
*
* To change this template use Tools | Options | Coding | Edit Standard Headers.
*/
using System;
using System.Collections.Generic;
using System.Text;
using System.Text.RegularExpressions;
using System.Drawing;
using System.Threading;
using WinForms = System.Windows.Forms;

using Ranorex;
using Ranorex.Core;
using Ranorex.Core.Testing;
using CommonLibraries.Libraries;

namespace CommonModules.CodeModules
{
/// <summary>
/// Description of ValidatePrintedCopy.
/// </summary>
[TestModule("15AA4F81-D48A-4B81-BC46-8320CC9056BB", ModuleType.UserCode, 1)]
public class ValidatePrintedCopy : ITestModule
{
/// <summary>
/// Constructs a new instance.
/// </summary>
public ValidatePrintedCopy()
{
// Do not delete - a parameterless constructor is required!
}

/// <summary>
/// Performs the playback of actions in this module.
/// </summary>
/// <remarks>You should not call this method directly, instead pass the module
/// instance to the <see cref="TestModuleRunner.Run(ITestModule)"/> method

string _Printformat = " ";
[TestVariable("379125e8-cc81-4051-9e88-0a0f48515f18")]
public string Printformat
{
get { return _Printformat; }
set { _Printformat = value; }
}

/// that will in turn invoke this method.</remarks>
string _PrintVerify = " ";
[TestVariable("c530e178-dbf8-4c16-a262-d07d9dc16f82")]
//for image comparison printValidate= "Contains|C:\\TestData\\TestPrint\\bmp2.bmp"
//for pdf text comaprison printValidate="Dr Test Practitioner|Ms Testadult Prescriptionceasemedication|PARACETAMOL DROPS 100mg/mL"
public string PrintVerify
{
get { return _PrintVerify; }
set { _PrintVerify = value; }
}

void ITestModule.Run()
{
Mouse.DefaultMoveTime = 300;
Keyboard.DefaultKeyPressTime = 100;
Delay.SpeedFactor = 1.0;
CustomKeywords keywords=new CustomKeywords();
keywords.addDelay("largeWait");


if(Printformat.Equals("pdf",StringComparison.InvariantCultureIgnoreCase))
{
FileOperations fileop1=new FileOperations();
fileop1.validateprintedpdfText(PrintVerify);
}

else
{
if(Printformat.Equals("bmp",StringComparison.InvariantCultureIgnoreCase))
{
ImageRelated img=new ImageRelated();

img.validatePrintedbmp(PrintVerify);
}

else
{
Report.Warn("Wrong printed copy fileformat specified,use either pdf or bmp");
}

}
}



}
}

Re: How to bind varables to Code module from Excel file

Posted: Tue Jul 02, 2019 11:42 am
by odklizec
Thanks. The code module looks OK. At which line the test fails exactly? And are you sure it does not fail in one of the CommonLibraries methods? Any chance you could post entire (zipped) test suite? BTW, what Ranorex version do you use?