当前位置: 首页 > 知识库问答 >
问题:

范围报告 如何在一个端口中显示测试类中的所有测试外壳?

华永新
2023-03-14

当我运行测试类中的所有测试用例时,我只得到一个测试用例结果,另外两个没有显示在范围报告中。如何在一个报告中获得所有的测试用例结果?

import com.aventstack.extentreports.ExtentReports;
import com.aventstack.extentreports.reporter.ExtentHtmlReporter;
import org.junit.jupiter.api.*;
import org.openqa.selenium.WebDriver;
import pl.me.automation.config.WebDriverType;
import pl.me.automation.page.ContactPage;
import pl.me.automation.page.HomePage;
import pl.me.automation.utils.TestDataReader;
import static org.junit.jupiter.api.Assertions.assertTrue;

我有一个测试类ContactPageTest:

public class ContactPageTest extends TestDataReader {
    private WebDriver webDriver;
    private HomePage homePage;
    private ExtentHtmlReporter reporter;
    private ExtentReports reports;

@beforeach和@AfterEach函数可能是我只能获得最新执行的测试结果的原因吗?我尝试为所有测试用例创建基类@BeforeMethod@AfterMethod@BeforeTest和@AfterTest,但也不起作用。

 @BeforeEach
    public void init() {
        webDriver = WebDriverType.CHROME.create();
        webDriver.get("https://www.store.com");
        homePage = new HomePage(webDriver);
        homePage.clickCookie();
        reporter = new ExtentHtmlReporter("src//main//resources//reports//index.html");
        reports = new ExtentReports();
        reports.attachReporter(reporter);

    }

    @AfterEach
    public void destroy() {
        webDriver.close();
        reporter.flush();
        reports.flush();
    }

我想在一个 raport 中显示三个测试用例:

    @Test
    public void shouldFillInAndSendForm() {
        reports.createTest("ContactPageTest - Fill in and send form");
        ContactPage contactPage = homePage.clickContact();
        contactPage.enterUserName(contact.getContactPageEnterUserName());
        contactPage.enterUserLastName(contact.getContactPageEnterUserLastName());
        contactPage.selectMessageSubject(contact.getContactPageSelectMessageSubject());
        contactPage.enterEmailAddress(contact.getContactPageEnterEmailAddress());
        contactPage.enterMessage(contact.getContactPageSelectMessageSubject());
        contactPage.clickSendMessageButton();
        assertTrue(contactPage.isContactMessageDisplayed());
    }

    @Test
    public void shouldSendEmptyForm() {
        reports.createTest("ContactPageTest - Send Empty Form");
        ContactPage contactPage = homePage.clickContact();
        contactPage.clickSendMessageButton();
        assertTrue(contactPage.isEmailValidationErrorDisplayed());
        assertTrue(contactPage.isNameValidationError());
        assertTrue(contactPage.isMessageValidationError());
    }

    @Test
    public void shouldSendFormWithIncorrectEmail() {
        reports.createTest("ContactPageTest - Send Form With Incorrect Email");
        ContactPage contactPage = homePage.clickContact();
        contactPage.enterUserName(contact.getContactPageEnterUserName());
        contactPage.enterUserLastName(contact.getContactPageEnterUserLastName());
        contactPage.selectMessageSubject(contact.getContactPageSelectMessageSubject());
        contactPage.enterEmailAddress(contact.getContactPageEnterIncorrectEmailAddress());
        contactPage.enterMessage(contact.getContactPageEnterMessage());
        contactPage.clickSendMessageButton();
        assertTrue(contactPage.isEmailValidationErrorDisplayed());
    }

}

共有1个答案

西门庆
2023-03-14

这就是我解决这个问题的方法。我加了@TestInstance(生命周期。每类)

@TestInstance(Lifecycle.PER_CLASS)
public class ContactPageTest extends Forms {
    private WebDriver webDriver;
    private HomePage homePage;
    private ExtentHtmlReporter reporter;
    private ExtentReports reports;

还有than @BeforeAll,@BeforeEach @AfterEach,@AfterAll批注

   @BeforeEach
    public void init() {
        webDriver = WebDriverType.CHROME.create();
        webDriver.get("https://www.store.com");
        homePage = new HomePage(webDriver);
        homePage.clickCookie();

    }

    @BeforeAll
    public void TearUpReporter(){
        reporter = new ExtentHtmlReporter("src//main//resources//reports//index.html");
        reports = new ExtentReports();
        reports.attachReporter(reporter);
    }

    @AfterEach
    public void destroy() {
        webDriver.quit();
    }

    @AfterAll
    public void tearDownReporter(){
        reporter.flush();
        reports.flush();
    }
 类似资料:
  • 我试图用Jasmine为Angularjs编写单元测试。这是我的控制器: 和测试 测试失败,即使我试图测试期望(true). toBe(true); 茉莉花,因果报应,棱角分明的嘲弄都在我的索引里。jasmine调试页面中的html,还有测试脚本。 我发现如果删除beforeach()块,expect(true)。托比(真的)通过了。 下面是一个错误:

  • 22.13.7.测试报告 测试任务默认生成以下结果. 一份HTML测试报告 一个与Ant的JUnit测试报告任务兼容的XML.这个格式与许多其他服务兼容,如CI serves 结果是有效的二进制,测试任务会从这些二进制结果生成其他结果。 有一个独立的TestReport任务类型会根据一些Test任务实例生成的二进制源码生成一个HTML报告.使用这种测试类型,需要定义一个destinationDir

  • 当运行单元测试的时候,Gradle 会输出一份 HTML 格式的报告以方便查看结果。Android plugin 则将所有连接设备的测试报告都合并到一个 HTML 格式的报告文件中。所有测试结果都以 XML 文件形式保存到 build/reports/androidTests/ 中(类似于 JUnit 的运行结果保存在 build/reports/tests 中)。可以自定义路径: android

  • 5.4 测试报告 当运行单元测试的时候,Gradle 会生成一份 HTML 报告以便于查看测试结果。 Android plugins 在这个基础上扩展了 HTML 报告,以合并所有已连接设备上的测试结果。 5.4.1 单工程报告 在运行测试的时候工程会自动的生成报告,默认位置是: build/reports/androidTests 这和 jUnit 报告的位置 build/reports/tes

  • 我尝试在我的应用程序模块中的代码的AndroidKotlin应用程序的声纳Qube中显示测试覆盖范围。我可以生成雅各的覆盖结果并显示声纳Qube分度仪,但问题是测试覆盖范围未显示在声纳Qube中: https://imgur.com/a/xOjxLl1 在我的项目的build.gradle中,我有: 在我的身体里。我的应用程序模块的gradle 我生成我的Jacoco报告: 并使用:生成我的son

  • 我试图用TestNG.xml运行我的TestNG套件。我的套件中总共有四个类,但我只能用所有方法一次运行两个类。假设我在每个类中有3个方法,那么在TestNG套件中,如果我只添加两个类,TestNG.xml文件将用6个方法运行我的两个测试。现在,如果我尝试在testng.xml文件中添加第三个类,它将只运行每个类的第一个方法。这意味着现在它只运行3个方法(每个类一个)。我在我的项目下创建了一个源文