allure serve allure-results
本次demo使用技术如下
使用springboot框架+testNG框架+Allure报告框架+管理Selenium WebDriver所需的驱动程序webdrivermanager库+log4j2日志
引入上面的依赖,具体allure-javaAnnotations项目pom文件如下:
4.0.0
org.example
allure2test
1.0-SNAPSHOT
org.springframework.boot
spring-boot-starter-parent
2.2.6.RELEASE
org.springframework.boot
spring-boot-starter
org.springframework.boot
spring-boot-starter-logging
org.springframework.boot
spring-boot-starter-log4j2
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-starter-test
test
io.qameta.allure
allure-testng
2.10.0
org.testng
testng
6.14.3
io.github.bonigarcia
webdrivermanager
3.0.0
org.springframework.boot
spring-boot-maven-plugin
/**@Epic -Epics可用作您的产品或项目的大量需求的占位符。Epic将在适当的时候分为较小的用户故事。
*用户故事可以拆分为较小的任务,并且可以是较大的Feature和Epic的一部分。
*/
@Epic
@Features
//是一个标注信息注解,但是改标注可以把相同的标注统一到相同模块下用于筛选
@Stories/@Story
//使用@Severity批注测试缺陷等级,例如BLOCKER,CRITICAL,NORMAL,MINOR,TRIVIAL
@Severity(SeverityLevel.BLOCKER)
//测试方法描述
@Description("测试流程描述")
//@Step注释是对任何(公共,私有,受保护)对任何方法进行注释。例如- @Step(“输入{0}和{1}”)
@Step
//@Attachment-附件只是带有注释的方法,@Attachment该方法返回String或byte [],应将其添加到报表中。我们可以将故障屏幕截图作为附件
@Attachment
//@Links-我们可以将测试链接到某些资源,例如TMS(测试管理系统)或错误跟踪器。将测试用例链接到测试方法总是有帮助的。
@Link
@Description("Description注解:验证主页面 test 2")
@Test
public void baseTest2() throws InterruptedException {
Assert.assertTrue(true, "测试示例 ");
}
@Description("Description注解:验证主页测试1")
@Story("基础测试")
@Test
public void baseTest1() {
System.out.println("我在test1测试中");
}
@Description("Description注解:验证主页面 test 2")
@Story("基础测试")
@Test
public void baseTest2() {
Assert.assertTrue(true, "测试示例 ");
}
@Severity(SeverityLevel.TRIVIAL)
@Description("Description注解:验证主页测试1")
@Story("基础测试")
@Test
public void baseTest1() {
System.out.println("我在test1测试中");
}
@Severity(SeverityLevel.BLOCKER)
@Description("Description注解:验证主页面 test 2")
@Story("基础测试")
@Test
public void baseTest2() {
Assert.assertTrue(true, "测试示例 ");
}
@Severity(SeverityLevel.CRITICAL)
@Description("Description注解:验证主页面 test 3")
@Story("基础测试")
@Test
public void baseTest3() {
Assert.assertTrue(false, "这是预期的失败");
}
@Step("验证参数 uname {0} and password {1}")
public boolean verifySignIn(String uname, String pwd) {
enterUserName(uname);
enterPassword(pwd);
clickOnSignIn();
return getErrorMessage().contains("不正确的");
}
@Step("输入 username {0}")
public void enterUserName(String userName) {
WebElement emailTxtBox = driver.findElement(emailTextBox);
if (emailTxtBox.isDisplayed())
emailTxtBox.sendKeys(userName);
}
//SignInPageTest测试类
@Severity(SeverityLevel.BLOCKER)
@Description("验证登录功能")
@Story("测试验证登录")
@Test
public void verifySignInFunction() {
System.out.println("登录功能详细信息...");
basePage = new BasePage(driver);
signInPage = basePage.clickSignInBtn();
Assert.assertTrue(signInPage.verifySignInPageTitle(), "登录页面标题不匹配");
Assert.assertTrue(signInPage.verifySignInPageText(), "页面文本不匹配");
Assert.assertTrue(signInPage.verifySignIn("usertest", "p123"), "登录失败");
}
@Epic("Epic示例")
@Feature("testNG+allure集成")
public class EpicTest {
@Test
@Story("对story注释的基本支持")
@Story("对story注释的高级支持")
public void testSomething() throws Exception {
System.out.println("Epic注解使用");
}
}
@Link("www.baidu.com")
@Severity(SeverityLevel.TRIVIAL)
@Description("Description注解:验证主页测试1")
@Story("基础测试")
@Test
public void baseTest1() {
System.out.println("我在test1测试中");
}
public void onTestFailure(ITestResult result) {
System.out.println("*** 测试执行 " + result.getMethod().getMethodName() + " 失败...");
System.out.println(result.getMethod().getMethodName() + " 失败!");
super.onTestFailure(result);
TestBase testBase = (TestBase) result.getInstance();
//获取驱动
WebDriver driver = testBase.getDriver();
// 在报告中附加屏幕截图
saveFailureScreenShot(driver);
}
@Attachment(value = "失败截图如下:",type = "image/png")
public void saveFailureScreenShot(WebDriver driver) {
byte[] screenshotAs = ((TakesScreenshot)driver).getScreenshotAs(OutputType.BYTES);
Allure.addAttachment("失败截图", new ByteArrayInputStream(screenshotAs));
}
在测试类上通过@Listeners(TestFailListener.class)注解来监听失败用例截图
@Listeners( TestFailListener.class)
@Epic("Epic示例")
@Feature("testNG+allure集成")
public class EpicTest {
@Test
@Story("对story注释的基本支持")
@Story("对story注释的高级支持")
public void testSomething() throws Exception {
System.out.println("Epic注解使用");
}
allure是一种灵活的轻量级多语言测试报告工具,它不仅可以以简洁的网络报告形式非常简洁地显示已测试的内容,而且还允许参与开发过程的每个人从日常执行中提取最大的有用信息,详细的了解注解使用会使你的测试报告更加易读直观!
该项目源码地址