我正在使用TestNG来执行此测试。执行此测试后,我将获得执行整个测试所需的总时间。现在要求是我需要记录从该测试开始执行的每个步骤所花费的时间。 以下是我的自动化测试。这有3个步骤。
@Test(priority = 1, description = "Login to Oasis")
public void verifyFilter(){
//Step#1
navMenu = loginToApplication(username, password);
Assert.assertTrue(navMenu.isDisplayed(getWebDriverInstance()), "Login Failed!!!");
//Step#2
advancedSearchForm = navMenu.clickSearchAllTitles();
if (!advancedSearchForm.isDisplayed(getWebDriverInstance())) {
SimpleSearchFormElement simpleSearchForm = new SimpleSearchFormElement(getWebDriverInstance());
advancedSearchForm = simpleSearchForm.openAdvancedSearchForm();
}
Assert.assertTrue(advancedSearchForm.isDisplayed(getWebDriverInstance()), "Advanced Search Form is not displayed!");
//Step#3
collectionFilterDialog = advancedSearchForm.openCollectionFilterDialog();
boolean flag = collectionFilterDialog.isCollectionSelectableListDisplayed();
Assert.assertTrue(flag, "Collection Filer dialog is not displayed!");
}
答案 0 :(得分:4)
我正在使用QAF进行测试自动化,其内置的报告生成每个步骤执行所需的时间并显示在报告中。我发现QAF是最简单的详细报道方式。
使用QAF,您的代码可能如下所示
popupwindow.setFocusable(true);
以上方式是飞行步骤声明。另一种定义步骤的方法:
@Test(priority = 1, description = "Login to Oasis")
public void verifyFilter(){
//Step#1
CommonStep.startTransaction("Step#1: name of the step");
navMenu = loginToApplication(username, password);
Assert.assertTrue(navMenu.isDisplayed(getWebDriverInstance()), "Login Failed!!!");
CommonStep.stopTransaction();
//Step#2
CommonStep.startTransaction("Step#2: name of the step");
advancedSearchForm = navMenu.clickSearchAllTitles();
if (!advancedSearchForm.isDisplayed(getWebDriverInstance())) {
SimpleSearchFormElement simpleSearchForm = new SimpleSearchFormElement(getWebDriverInstance());
advancedSearchForm = simpleSearchForm.openAdvancedSearchForm();
}
Assert.assertTrue(advancedSearchForm.isDisplayed(getWebDriverInstance()), "Advanced Search Form is not displayed!");
CommonStep.stopTransaction();
//Step#3
CommonStep.startTransaction("Step#3: name of the step");
collectionFilterDialog = advancedSearchForm.openCollectionFilterDialog();
boolean flag = collectionFilterDialog.isCollectionSelectableListDisplayed();
Assert.assertTrue(flag, "Collection Filer dialog is not displayed!");
CommonStep.stopTransaction();
}
在testNG测试中调用此方法,您将在报告中找到步骤。 teststep的另一个好处是你可以使用description来调用bdd中的这一步。
答案 1 :(得分:1)
TestNG是一个单元测试框架。对于单元测试,使用@Test注释的每个方法都是一个测试。
但对于QA自动化工程师,我认为这是一个步骤。也就是说,该类是一个端到端的测试。所有测试方法都将是测试/工作流程的步骤。
因此,您可以按照此处所示设计TestNG课程 - 您也可以完成时间跟踪。
#Demo1 a:hover {
background-color:#FF0000;
}
答案 2 :(得分:0)
我很想知道是否需要找出每个动作的执行时间?它服务的是什么。如果您仍然需要这样做,我建议您利用下面的内容
对于基于UI的自动化测试,您可以使用EventFiringWebDriver。这个Selenium实现为您提供了插入钩子以监听Selenium动作产生的各种不同事件的能力。因此,您应该能够构建一个时间记录器,它实现一个WebDriverEventListener,您可以将其EventFiringWebDriver
连接到Reporter
,并在内部调用Reporter.log()(Reporter.log
是一个TestNG类)。您可以在我的博文here中阅读有关窃听webdriver事件的更多信息。
对于基于非UI的自动化测试,您可以考虑以下两个之一