Run API Tests (Windows only)
In addition to using OpenText Functional Testing for Developers to test your application's user interface, you can also run an OpenText Functional Testing 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 OpenText Functional Testing API test are included as part of your OpenText Functional Testing for Developers test results.
Note: It is not necessary to have OpenText Functional Testing installed on your computer to run OpenText Functional Testing API tests.
Prerequisites
Before running OpenText Functional Testing API tests in OpenText Functional Testing for Developers, you must:
- Save and run the test in OpenText Functional Testing at least once.
- If you installed OpenText Functional Testing for Developers as part of OpenText Functional Testing, enable HTML Report in OpenText Functional Testing. For more details, see Set run result reporting options.
- Install the Microsoft Access Database Engine 2016 if you are running an 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
To access and run API tests, use the APITestRunner.Run method:
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 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 OpenText Functional Testing for Developers report, with a link to open the results of the entire OpenText Functional Testing 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 API test
While each input parameter for your API test contains a default value (as set in OpenText Functional Testing), 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 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 API test
In OpenText Functional Testing, 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 API test, the value of this parameter is available with the APITestResult class in OpenText Functional Testing for Developers. 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 test objects 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 test objects 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: