微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何将 Extent 或 Junit 报告报告和集成到“For 循环”测试场景并添加断言报告通过和失败

如何解决如何将 Extent 或 Junit 报告报告和集成到“For 循环”测试场景并添加断言报告通过和失败

我正在自动化电子商务网站。我正在使用 JUNIT-Selenium 框架。 他们是我正在处理的两个文件,第一个是提到我的测试步骤的“TestCase.java”,为了启动自动化,我运行这个文件,第二个文件是“TestMain.java”,它具有将由 First 使用的验证方法文件以验证并在 UI 中输入数据(主要使用 If ..else 验证)。

一个文件自动化启动代码组成,它使用Hashmap读取excel,范围报告启动和刷新,使用testMain.java中的方法输入数据并通过if...else语句进行验证。

TestCase.java 看起来像这样:

public class TestCase extends AppTest {

private StringBuffer verificationErrors = new StringBuffer();

@Override
@Before
public void setUp() throws Exception {
    super.setUp();
    preparation = new Prep();
    application = new AppTotest();
    user = new Environment();
}

@Test
public void testLAP_Creamix() throws Exception {
    try {
        launchMainApplication();

        Test_frMain Test_frMainPage = new Test_frMain(tool,test,user,application);

        HashMap<String,ArrayList<String>> win = CreamixWindowsDataset.main();
        SortedSet<String> keys = new TreeSet<>(win.keySet());
        ExtentHtmlReporter htmlReporter = new ExtentHtmlReporter("Test_Report.html");
        ExtentReports extent = new ExtentReports();
        extent.attachReporter(htmlReporter);

        ExtentTest test1 = extent.createTest("Creamix test");

        for (String i : keys) {
            System.out.println("########### Test = " + win.get(i).get(0) + " ###########");
            Lapeyre_frMainPage.EnterTaille(win.get(i).get(1));
            Lapeyre_frMainPage.SelectCONfigURATION(win.get(i).get(2));
            Lapeyre_frMainPage.SelectPLANVASQUE(win.get(i).get(3));
            Lapeyre_frMainPage.SelectCOULEUR(win.get(i).get(4));
            Lapeyre_frMainPage.SelectPOIGNEES(win.get(i).get(5));
            Lapeyre_frMainPage.SelectTYPE_DE_MEUBLE(win.get(i).get(6));
            Lapeyre_frMainPage.SelectCHOISISSEZ(win.get(i).get(7));

            Lapeyre_frMainPage.VerifyREFERENCE(win.get(i).get(8));(FROM HERE Validation Starts)
            Lapeyre_frMainPage.VerifyQUANTITY(win.get(i).get(9));
            Lapeyre_frMainPage.VerifyREFERENCETwo(win.get(i).get(10));
            Lapeyre_frMainPage.VerifyQUANTITYTwo(win.get(i).get(11));
            Lapeyre_frMainPage.VerifyREFERENCEThree(win.get(i).get(12));
            Lapeyre_frMainPage.VerifyQUANTITYThree(win.get(i).get(13));
            Lapeyre_frMainPage.VerifyREFERENCEFour(win.get(i).get(14));
            Lapeyre_frMainPage.VerifyQUANTITYFour(win.get(i).get(15));
            Lapeyre_frMainPage.VerifyREFERENCEFive(win.get(i).get(16));
            Lapeyre_frMainPage.VerifyQUANTITYFive(win.get(i).get(17));
            Lapeyre_frMainPage.VerifyREFERENCESix(win.get(i).get(18));
            Lapeyre_frMainPage.VerifyQUANTITYSix(win.get(i).get(19));
            Lapeyre_frMainPage.VerifyREFERENCESeven(win.get(i).get(20));
            Lapeyre_frMainPage.VerifyQUANTITYSeven(win.get(i).get(21));
            Lapeyre_frMainPage.VerifyPanierPrice(win.get(i).get(22));
            Lapeyre_frMainPage.VerifyECO_PARTPrice(win.get(i).get(23));

            Lapeyre_frMainPage.ClickCREAMIXReinit();(Reset button to test next scenario)

            test1.pass("Scenario " + win.get(i).get(0) + " is passed");
            System.out.println("########### Test End ##############");
            extent.flush();----------(Extent report over)

        }

        test.setResult("pass");
    } catch (AlreadyRunException e) {
    } catch (Exception e) {
        verificationErrors.append(e.getMessage());
        throw e;
    }

}

@Override
@After
public void tearDown() throws Exception {
    super.tearDown();
}

}

(请注意一个循环是一种场景,其中我自定义和验证产品的价格,然后单击重置按钮到下一个场景进行相同的操作)

还有,

“TestMain.java”来自我使用方法验证的地方

其中一种方法如下图

public void VerifyREFERENCE(String REF_1) throws Exception {
    System.out.println("Verifying reference article");
    if (REF_1.equals("SKIP")) {
        System.out.println("SKIPPED");
    } else {
        WebElement referenceOne = tool.searchUsingXPath("//tbody//tr[1]//td//div[2]");
        String Ref1 = referenceOne.getText().trim();
        System.out.println("ref 1 is " + Ref1);
        if (Ref1.equals("Ref. de l'article : " + REF_1)) {
            System.out.println("Reference 1 is correct");
        } else {
            System.out.println("Reference 1 is incorrect");
        }
    }
}

我在 TestCase.java 中使用范围报告(请检查上面的代码)来报告我的场景,但问题是它将所有测试用例显示为 PASS,如果发生任何失败,它不会报告(它终止)。

原因是我没有在任何地方使用过断言,但是我如何在这个框架中应用这样的断言

总结:

1- 我需要在报告中添加价格验证检查 2-我尝试在 TestCase.java "assertEquals("Verify REFERENCE 1",win.get(i).get(8),Lapeyre_frMainPage.GetREFERENCE());" 中使用这一行,但我不能在 TestCase.java 中使用断言(它不允许我)。 3- 请向我展示报告此类框架通过和失败的替代方法,在范围报告中,我可以显示 excel 和 UI 之间的价格不匹配。

解决方法

如果您的 TestCase 类扩展了 junit 测试,或者您自己在代码中实现了该方法,那么您只能期望 assertEquals() 工作。

无论如何,您似乎都在尝试使用 ExtentReports。我对该库没有经验,但根据 javadoc for ExtentTest,您似乎应该根据测试结果自己调用 .pass().fail()

在您的测试用例中,我相信您想尝试维护一个布尔值来跟踪测试是否通过。

第一步是修改 VerifyREFERENCE() 以返回一个布尔值,指示它是通过还是失败,而不是无效。

public boolean VerifyREFERENCE(String REF_1) throws Exception {
    System.out.println("Verifying reference article");
    if (REF_1.equals("SKIP")) {
        System.out.println("SKIPPED");
    } else {
        WebElement referenceOne = tool.searchUsingXPath("//tbody//tr[1]//td//div[2]");
        String Ref1 = referenceOne.getText().trim();
        System.out.println("ref 1 is " + Ref1);
        if (Ref1.equals("Ref. de l'article : " + REF_1)) {
            System.out.println("Reference 1 is correct");
            return true;
        } else {
            System.out.println("Reference 1 is incorrect");
            return false;
        }
    }
}

然后,在您的 TestCase 中,在循环之前将布尔值初始化为 true。在循环内,对每个 VerifyREFERENCE() 调用的返回值执行逻辑与 (&&)。最后,在循环结束后,测试布尔值,并根据需要通过或失败 ExtentTest:

ExtentTest test1 = extent.createTest("Creamix test");
boolean passed = true;

for (String i : keys) {
    System.out.println("########### Test = " + win.get(i).get(0) + " ###########");
    Lapeyre_frMainPage.EnterTaille(win.get(i).get(1));
    ....
    Lapeyre_frMainPage.SelectCHOISISSEZ(win.get(i).get(7));

    passed = passed && Lapeyre_frMainPage.VerifyREFERENCE(win.get(i).get(8));(FROM HERE Validation Starts)
    passed = passed && Lapeyre_frMainPage.VerifyQUANTITY(win.get(i).get(9));
    ...
    passed = passed && Lapeyre_frMainPage.VerifyECO_PARTPrice(win.get(i).get(23));

    Lapeyre_frMainPage.ClickCREAMIXReinit();(Reset button to test next scenario)

    if(passed) {
       test1.pass("Scenario " + win.get(i).get(0) + " is passed");
    } else {
       test1.fail("Scenario " + win.get(i).get(0) + " is failed");
    }
    System.out.println("########### Test End ##############");
    extent.flush();----------(Extent report over)
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。