unittestreport-自动化测试报告生成

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了unittestreport-自动化测试报告生成相关的知识,希望对你有一定的参考价值。

参考技术A 对于自动化测试来说,如何能把测试结果更直观更有效的展示出来一直是测试人员的一块心病。目前主流的有很多生成测试报告的第三方库,例如, htmlTestRunner 、 BeautifulReport 、 Allure ,等等。不过这些库使用起来各有利弊,总之没有一个库能既满足实用又满足美观。

最近看到一个unittest框架配套的测试报告生成插件,可以做到与unittest框架无缝衔接,并且支持多种格式的自动化测试报告。

unittestreport 是基于unittest开发的一个功能扩展库,开发之初,开发人员只是计划开发一个unittest生成html测试报告的模块,因此命名为 unittestreport (听起来很接地气,有没有...😌)。目前已经迭代了数个版本,其提供的功能也越来越丰富。目前已经支持的功能有:

unittestreport 中封装了一个 TestRunner 类,可以用来代替unittest中的 TextTestRunner 来执行测试用例,执行完测试用例后会自动生成测试报告。并且支持各种测试报告的风格。

❕❕不过实际测试发现,PyCharm中执行的用例不会生成测试报告,只有在终端执行的测试用例会生成测试报告。

TestRunner 类创建测试报告时,可以通过指定测试参数生成自定义的测试报告。

新的 unittestreport 中对 rerun 方法进行了优化,测试时指定 count 和 interval 即可将执行失败的用例多次执行。

目前邮件接口只支持 465 和 25 两个端口

使用方法

关于数据驱动本,unittestreport.dataDriver模块中实现了三个使用方法,支持使用列表(可迭代对象)、json文件、yaml文件来生成测试用例.

unittestreport 中同样提供了对并发执行用例的支持,使用 TestRunner.run() 方法执行测试用例时,加上 thread_count 参数即可执行运行用例时开启的线程数量。

:warning: 使用并发方式执行用例时,需要考虑以下几个问题

Allure--自动化测试报告生成

之前尝试使用过testNG自带的测试报告、优化过reportNG的测试报告,对这两个报告都不能满意。后经查找资料,发现有个神器:

Allure(已经有allure2了,笔者使用的就是allure2),生成的测试报告与上述两种对比,简直完美!先上个测试报告的图表,给大家直观感受下:

技术分享图片

技术分享图片

 

接下来教大家来使用Allure,生成自己高大上的测试报告,带有失败用例截图、测试步骤和测试说明信息。

第一步,在maven中添加依赖并进行相应的配置:

 <properties>
        <aspectj.version>1.8.10</aspectj.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>io.qameta.allure</groupId>
            <artifactId>allure-testng</artifactId>
            <version>2.6.0</version>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>org.aspectj</groupId>
            <artifactId>aspectjweaver</artifactId>
            <version>${aspectj.version}</version>
        </dependency>
</dependencies>

 <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>2.10</version>
                <configuration>
                    <!--设置参数命令行-->
                    <argLine>
                        -javaagent:"${settings.localRepository}/org/aspectj/aspectjweaver/${aspectj.version}/aspectjweaver-${aspectj.version}.jar"
                    </argLine>
                    <systemPropertyVariables>
                        <!--是否忽略html,解释见下图。与之后在reportNg报告上显示截图相关。当前已经使用allure了,这里可以直接去掉啦-->
                        <org.uncommons.reportng.escape-output>false</org.uncommons.reportng.escape-output>
                    </systemPropertyVariables>
                    <!--测试失败后,是否忽略并继续测试-->
                    <testFailureIgnore>true</testFailureIgnore>
                    <argLine>
                        -Dfile.encoding=UTF-8
                    </argLine>

                    <suiteXmlFiles>
                        <!--代表的是要执行的测试套件名称-->
                        <suiteXmlFile>src/test/resources/testNG.xml</suiteXmlFile>
                    </suiteXmlFiles>

                </configuration>


            </plugin>

 

第二步:在Jenkins中安装Allure的插件【系统管理】-【插件管理】-【可选插件】中下载并安装Allure,安装后重启。安装成功后,可在【系统管理】-【插件管理】-【已安装插件】中看到

技术分享图片

 

第三步:到girhub上下载Allure2 ,地址:https://github.com/allure-framework/allure2/releases

技术分享图片

 

下载之后解压到相应目录下,如:

技术分享图片

 

 

第四步,在Jenkins的【系统管理】-【全局工具配置】中设置allure的安装地址:

技术分享图片

保存即可。

此时通过Jenkins构建并执行测试代码后,就可以看到Allure的测试报告了。以上,完成了Allure的基本配置。

技术分享图片

 

好啦,Allure可以使用了,接下来,我们挖掘下该工具其他好用的点。

第一:生成失败用例截图:

第一步:在测试类上,添加Listeners的注解

技术分享图片

 

 第二步:实现自己的用例的监听,监听到之后进行截图

public class TestFailListener extends TestListenerAdapter {
   
    @Override
    public void onTestFailure(ITestResult result) {
        takePhoto();
    }

    @Attachment(value = "screen shot",type = "image/png")
    public byte[]  takePhoto(){
        byte[] screenshotAs = ((TakesScreenshot)BaseTester.driver).getScreenshotAs(OutputType.BYTES);
        return screenshotAs;
    }

}

使用Allure的attachment注解,即可实现报告中显示截图的需求。

第三步,将监听配置到testNG的配置文件中

技术分享图片

 

截图效如下图:

技术分享图片

 

 第二:显示测试描述信息。

在测试报告中,我们期望可以看到每个case的描述信息,可以使我们的测试过程更加清晰。

只需要在Test注解中,给description进行赋值即可:

技术分享图片

 

 效果如下图:

技术分享图片

 

是不是很心动,赶紧动手试试吧!!

 

以上是关于unittestreport-自动化测试报告生成的主要内容,如果未能解决你的问题,请参考以下文章

jemter-自定义测试报告

Allure--自动化测试报告生成

Pytest+Allure生成自动化测试报告

WindowsGUI自动化测试框架搭建-框架主入口main.py设计&测试报告调用和生成

python接口测试-自动化测试报告生成。

Appium基于python unittest自动化测试并生成html测试报告