jenkins + Allure配置

1.配置pom文件;

以下是官网的例子,将所有需要的配置项添加到已有的pom.xml即可


    1.8.10



    
        io.qameta.allure
        allure-testng
        LAST_VERSION
        test
    



    
        
            org.apache.maven.plugins
            maven-surefire-plugin
            2.20
            
                
                    -javaagent:"${settings.localRepository}/org/aspectj/aspectjweaver/${aspectj.version}/aspectjweaver-${aspectj.version}.jar"
                
            
            
                
                    org.aspectj
                    aspectjweaver
                    ${aspectj.version}
                
            
        
    

2.在jenkins上配置allure 插件

  1. 打开插件管理,搜索 Allure Jenkins Plugin安装并重启jenkins服务
  2. 全局工具配置--找到Allure Commandline--安装jenkins + Allure配置_第1张图片
  3. 配置job  

构建后的操作--选择Allure Report

jenkins + Allure配置_第2张图片

构建job后即可看到已经生产 Allure report

jenkins + Allure配置_第3张图片

此时report里面并没有任何数据,我们需要在用例里添加注解

jenkins + Allure配置_第4张图片

 

3.注解

根据官方文档,我列举一些常用的注解,其他的可以自行去官网查阅

    //测试用例编号
    @TmsLink("01")
    //bug编号
    @Issue("GH-56")
    //用例描述
    @Description("测试allure report")\
    用例步骤
    @Step("打开百度新闻首页获取页面title")

 

先看效果

jenkins + Allure配置_第5张图片

代码实现

import io.qameta.allure.*;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.testng.Assert;
import org.testng.annotations.*;
import pers.lp.selenium.common.DotTestListener;
import pers.lp.selenium.common.Page;
import pers.lp.selenium.common.Preset;
import ru.yandex.qatools.allure.annotations.TestCaseId;
import ru.yandex.qatools.allure.annotations.Title;

/**
 * @Author: liupeng
 * @Description:
 * @Date: Created in 16:18 2018/6/29
 * @Modified By:
 */
@Listeners({ DotTestListener.class })
public class Demo2TestCase {

    WebDriver driver;
    public Preset presetBrowser;
    public Page page;
    @TmsLink("01")
    @Issue("GH-56")
    @Description("测试allure report")
    @Step("打开百度新闻首页获取页面title")
    @Test
    public void f() {
        page.getUrl("baidu_news");
        presetBrowser.getDriver().getTitle();
        System.out.print(page.getTitle().toString());
        Assert.assertEquals("1百度新闻——全球最大的中文新闻平台",page.getTitle());

    }

    @BeforeClass
    @Parameters("browser")
    public void before(String browser) {
        presetBrowser = new Preset(browser);
        page = new Page(presetBrowser.getDriver());
        presetBrowser.maxwind();
        presetBrowser.timeout(2);
    }

    @AfterClass
    public void after() {
        presetBrowser.quit();
    }
}

添加@TmsLink, @Issue注解后,在allure report中会生成相应的链接,但是它是如何访问我们的缺陷管理系统以及用例管理系统给的呢,在官网文档有说明。

jenkins + Allure配置_第6张图片

查看文档发现,需要有一个配置文件,将我们系统域名预先设置好,再将{}的内容使用注解进行替换,这样就能访问到我们想范文的连接了。但是官方并没有说明这个配置文件的具体配置,好在官方有一些简单的小demo可供产考;

这是官方的testng的demo地址https://github.com/allure-examples/allure-testng-example/tree/master/src/test/resources
可以看到它有一个文件名叫做allure.properties

jenkins + Allure配置_第7张图片

这是文件的内容

allure.results.directory=target/allure-results
allure.link.issue.pattern=https://example.org/issue/{}
allure.link.tms.pattern=https://example.org/tms/{}

第一个应该是默认的输出路径,暂时未用到先不研究,将你需要访问的url替换就可以,比如:

allure.link.issue.pattern=http://jira.XXX.com/browse/{}
allure.link.tms.pattern=http://testlink.XXX.com/{}

这里需要注意一点,allure.properties的位置必须是跟你路径下的test同级否则会找不到这个文件;

我用的是idea创建的maven项目

jenkins + Allure配置_第8张图片

 

最终效果如下:

jenkins + Allure配置_第9张图片

4.自动截图

allure 最吸引我的地方是,它能将selenium的截图放到report中,对于自动化集成来说无疑方便了很多;

还是先上效果图:

jenkins + Allure配置_第10张图片

看看官方文档的介绍

jenkins + Allure配置_第11张图片

要完成将截图放到report这一步,需要用到注解@Attachment,它的功能是,只要运行到这段代码便可以将你的返回值放入到report中。

从官方的例子中,可以看到,需要返回一个byte[]类型的值;selenium提供了TakesScreenshot的截图方法,拿来用便是

public class ScreenShot {
    public WebDriver driver;

    public ScreenShot(WebDriver driver) {
        this.driver = driver;
    }
    @Attachment(value = "Failure", type = "image/png")
    private byte[] takeScreenshot(String screenPath) {
        try {
            File scrFile = ((TakesScreenshot) driver)
                    .getScreenshotAs(OutputType.FILE);
            FileUtils.copyFile(scrFile, new File(screenPath));
        } catch (IOException e) {
            System.out.println("Screen shot error: " + screenPath);
        }
        return ((TakesScreenshot) driver)
                .getScreenshotAs(OutputType.BYTES);
    }

    public void takeScreenshot(String classname, String methodname) {
        SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMddHHmmss");
        Date currentTime = new Date();
        String dateString = formatter.format(currentTime);
        String screenName = classname+"_"+methodname+"_"+dateString+ ".png";
        System.out.println(screenName);
        File dir = new File("test-output/snapshot");
        if (!dir.exists())
            dir.mkdirs();
        String screenPath = dir.getAbsolutePath() + "/" + screenName;
        this.takeScreenshot(screenPath);
    }

}

然后写一个监听,只要断言失败就自动截图,就可以在allure中看到截图了。

以上就是Allure的简单运用了~

你可能感兴趣的:(jenkins,Allure)