Run UFT API Tests (Windows only)
In addition to using UFT Developer to test your application's user interface, you can also run a UFT One API test as part of your test. This enables you to test your application's service layer with the UI layer in a fully unified test of your application.
The results from the UFT One API test are included as part of your UFT Developer test results.
Note: It is not necessary to have UFT One installed on your computer to run UFT One API tests.
Prerequisites
Before running UFT One API tests in UFT Developer, you must:
- Save and run the test in UFT One at least once.
- If you installed UFT Developer as part of UFT One, enable HTML Report in UFT One. For more details, see Set run result reporting options.
- Install the Microsoft Access Database Engine 2016 if you are running a UFT One API test using Excel data sources.
-
Add the appropriate
using
orimport
statements:using HP.LFT.SDK.APITesting.UFT
import com.hp.lft.sdk.apitesting.uft.APITestResult;
import com.hp.lft.sdk.apitesting.uft.APITestRunner;
Run tests
You run UFT One API tests using the APITestRunner.Run method which accesses and runs the API test:
APITestRunner.Run(@"C:\Users\default\Documents\Unified Functional Testing\APITest1");
APITestRunner.run("C:\\Users\default\\Documents\\Unified Functional Testing\\APITest1");
In the Run method arguments, you can also pass input parameters for the UFT One API test as shown below.
This method returns an APITestResult object containing the results of the test - both the status of the test run and the test output parameters (if relevant).
The results for the API test run are displayed in the UFT Developer report, with a link to open the results of the entire UFT One API test. These results can also be found in the test's results folder (RunResults/ApiTestReport).
For more details on these classes and methods, see the .NET SDK Reference or Java SDK Reference.
Use the results of the API test run in other steps
var result = APITestRunner.Run(@"C:\API Tests\APITest1", inParams); var outParams = result.OutParams; var status = result.Status;
APITestResult result = APITestRunner.run("C:\\API Tests\\APITest1", inParams); outParams = result.getOutParams(); boolean status = result.getStatus();
Assign values for the input parameters of your UFT One API test
While each input parameter for your API test contains a default value (as set in UFT One), you can set the values to use for the input parameters as an argument of the APITestRunner.Run method.
Note: If you define the parameters manually, you must define values for all input parameters in the UFT One API test (even if the test has default values for the parameters).
var inParams = new Dictionary<string, object> { {"FirstParam", "c"}, {"SecondParam", "d"} }; var result = APITestRunner.Run(@"C:\API Tests\APITest1", inParams);
Map<String, Object> inParams = new HashMap<String, Object>(); inParams.put("FirstParam", "c"); inParams.put("SecondParam", "d"); APITestResult result = APITestRunner.run("C:\\API Tests\\APITest1", inParams);
Select a specific profile for your UFT One API test
In UFT One, you can specify multiple profiles for each API test. You can select one of these profiles to use as an argument of the APITestRunner.Run method:
APITestRunner.Run(@"C:\API Tests\APITest1", "Profile1");
APITestRunner.run("C:\\API Tests\\APITest1", "Profile1");
Pass the value of your test's output parameters to other steps
If you add an output parameter to your UFT One API test, the value of this parameter is available with the APITestResult class in UFT Developer. The APITestResult class returns this value and you can assign for use in other parts of the test:
[Test] public void UFTDevTestWithApi() { IBrowser browser; IEditField name; //Describe and instantiate the UFT Developer TOs browser = BrowserFactory.Launch(BrowserType.Chrome); name = browser.Describe<IEditField>(new EditFieldDescription { TagName = "INPUT", Name = "WebEdit", Type = "text" }); //Start the test - navigate to the relevant page browser.Navigate("http://mystore.net:3000/#/store"); //Run API test and verify the test passed successfully var result = APITestRunner.Run(TestsPath); Verify.AreEqual(true, result.Status, "The status of the APITestResult wasn't right"); //Save the API test result into a variable var text = result.OutParams["OutPutParam1"]; //Use this variable in the test - set the value in an edit field name.SetValue(text); //Validate the value in the edit field is as expected Verify.AreEqual(name.Value, "John doe"); }
@Test public void UFTDevTestWithApi() throws GeneralLeanFtException { Browser browser; EditField name; //Describe and instantiate the UFT Developer TOs browser = BrowserFactory.launch(BrowserType.CHROME); name = browser.describe(EditField.class, new EditFieldDescription.Builder().tagName("INPUT").name("WebEdit").type("text").build()); //Start the test - navigate to the relevant page browser.navigate("http://mystore.net:3000/#/store"); //Running API test and verifying the test passed successfully APITestResult result = APITestRunner.run("TestPath"); assertEquals("The status of the API Test is wrong", true, result.getStatus() ); //Save the API test result into a variable String text = result.getOutParams().get(1); System.out.println(text); //Use this variable in the test - setting the value in an edit field name.setValue(text); //Validate the value in the edit field is as expected Verify.areEqual(name.getValue(), "John doe"); }
See also: