一、摘要

本篇博文将介绍Python和Selenium进行自动化测试时,如何借助allure生成自动化测试报告

二、环境配置

首先python环境中安装pytest和pytest_allure_adaptor模块,命令如下

pip install pytest
pip install pytest_allure_adaptor

三、执行测试

pytest -s -q --alluredir [path_to_report_dir]

[path_to_report_dir]:为执行测试后生成测试结果的路径,是个自定义路径

测试完成后,在命令中指定的[path_to_report_dir]的自定义路径下,会生成类似如下xml文件

文件名为(自动生成):95060033-2085-40bb-b85a-64e43dc1d04b-testsuite.xml

<ns0:test-suite xmlns:ns0="urn:model.allure.qatools.yandex.ru" start="1544418468984" stop="1544418469065">
<name>TestScripts</name>
<labels/>
<test-cases>
<test-case start="1544418468984" status="passed" stop="1544418468987">
<name>test_asserts.test_add</name>
<attachments/>
<labels>
<label name="severity" value="normal"/>
<label name="thread" value="9944-MainThread"/>
<label name="host" value="DESKTOP-BE70S9D"/>
<label name="framework" value="pytest"/>
<label name="language" value="cpython3"/>
</labels>
<steps>
<step start="1544418468987" status="passed" stop="1544418468987">
<name>test_add</name>
<title>test_add</title>
<attachments/>
<steps/>
</step>
</steps>
</test-case>
<test-case start="1544418468990" status="passed" stop="1544418468991">
<name>test_asserts.test_add2</name>
<attachments/>
<labels>
<label name="severity" value="normal"/>
<label name="thread" value="9944-MainThread"/>
<label name="host" value="DESKTOP-BE70S9D"/>
<label name="framework" value="pytest"/>
<label name="language" value="cpython3"/>
</labels>
<steps>
<step start="1544418468991" status="passed" stop="1544418468991">
<name>test_add2</name>
<title>test_add2</title>
<attachments/>
<steps/>
</step>
</steps>
</test-case>
<test-case start="1544418468992" status="passed" stop="1544418468993">
<name>test_asserts.test_add3</name>
<attachments/>
<labels>
<label name="severity" value="normal"/>
<label name="thread" value="9944-MainThread"/>
<label name="host" value="DESKTOP-BE70S9D"/>
<label name="framework" value="pytest"/>
<label name="language" value="cpython3"/>
</labels>
<steps>
<step start="1544418468993" status="passed" stop="1544418468993">
<name>test_add3</name>
<title>test_add3</title>
<attachments/>
<steps/>
</step>
</steps>
</test-case>
<test-case start="1544418468994" status="failed" stop="1544418469045">
<name>test_asserts.test_add4</name>
<failure>
<message>AssertionError: assert 39 &gt;= 50
+ where 39 = add(17, 22)</message>
<stack-trace>def test_add4():
&gt; assert add(17,22) &gt;= 50
E assert 39 &gt;= 50
E + where 39 = add(17, 22) test_asserts.py:34: AssertionError</stack-trace>
</failure>
<attachments/>
<labels>
<label name="severity" value="normal"/>
<label name="thread" value="9944-MainThread"/>
<label name="host" value="DESKTOP-BE70S9D"/>
<label name="framework" value="pytest"/>
<label name="language" value="cpython3"/>
</labels>
<steps/>
</test-case>
<test-case start="1544418469046" status="passed" stop="1544418469047">
<name>test_asserts.test_in</name>
<attachments/>
<labels>
<label name="severity" value="normal"/>
<label name="thread" value="9944-MainThread"/>
<label name="host" value="DESKTOP-BE70S9D"/>
<label name="framework" value="pytest"/>
<label name="language" value="cpython3"/>
</labels>
<steps/>
</test-case>
<test-case start="1544418469048" status="passed" stop="1544418469049">
<name>test_asserts.test_not_in</name>
<attachments/>
<labels>
<label name="severity" value="normal"/>
<label name="thread" value="9944-MainThread"/>
<label name="host" value="DESKTOP-BE70S9D"/>
<label name="framework" value="pytest"/>
<label name="language" value="cpython3"/>
</labels>
<steps/>
</test-case>
<test-case start="1544418469050" status="failed" stop="1544418469054">
<name>test_asserts.test_true</name>
<failure>
<message>AssertionError: assert not True
+ where True = is_prime(7)</message>
<stack-trace>def test_true():
&gt; assert not is_prime(7)
E assert not True
E + where True = is_prime(7) test_asserts.py:65: AssertionError</stack-trace>
</failure>
<attachments/>
<labels>
<label name="severity" value="normal"/>
<label name="thread" value="9944-MainThread"/>
<label name="host" value="DESKTOP-BE70S9D"/>
<label name="framework" value="pytest"/>
<label name="language" value="cpython3"/>
</labels>
<steps/>
</test-case>
<test-case start="1544418469055" status="passed" stop="1544418469057">
<name>test_fixture1.test_numbers_3_4</name>
<attachments/>
<labels>
<label name="severity" value="normal"/>
<label name="thread" value="9944-MainThread"/>
<label name="host" value="DESKTOP-BE70S9D"/>
<label name="framework" value="pytest"/>
<label name="language" value="cpython3"/>
</labels>
<steps/>
</test-case>
<test-case start="1544418469058" status="passed" stop="1544418469059">
<name>test_fixture1.test_strings_a_3</name>
<attachments/>
<labels>
<label name="severity" value="normal"/>
<label name="thread" value="9944-MainThread"/>
<label name="host" value="DESKTOP-BE70S9D"/>
<label name="framework" value="pytest"/>
<label name="language" value="cpython3"/>
</labels>
<steps/>
</test-case>
<test-case start="1544418469060" status="passed" stop="1544418469062">
<name>test_fixture2.TestUM.test_numbers_5_6</name>
<attachments/>
<labels>
<label name="severity" value="normal"/>
<label name="thread" value="9944-MainThread"/>
<label name="host" value="DESKTOP-BE70S9D"/>
<label name="framework" value="pytest"/>
<label name="language" value="cpython3"/>
</labels>
<steps/>
</test-case>
<test-case start="1544418469064" status="passed" stop="1544418469065">
<name>test_fixture2.TestUM.test_strings_b_2</name>
<attachments/>
<labels>
<label name="severity" value="normal"/>
<label name="thread" value="9944-MainThread"/>
<label name="host" value="DESKTOP-BE70S9D"/>
<label name="framework" value="pytest"/>
<label name="language" value="cpython3"/>
</labels>
<steps/>
</test-case>
</test-cases>
</ns0:test-suite>

四、使用allure-commandline将xml制作成html报告

下载地址为:

https://github.com/allure-framework/allure2/releases

https://github.com/allure-framework/allure1/releases

解压到allure-commandline目录

进入bin目录,运行allure.bat

添加allure到环境变量PATH(\安装路径\allure-commandline\bin)
执行命令:

allure generate directory-with-results/ -o directory-with-report

[directory-with-results]: 为第三部中的路径,第三步中已经指定

[directory-with-report]: 自定义html生成到哪个路径下,如下图所示

五、查看报告

六、报告样式

还可以切换语言

Python&Selenium&pytest借助allure生成自动化测试报告的更多相关文章

  1. Python&Selenium借助html-testRunner生成自动化测试报告

    一.摘要 本博文将介绍Python和Selenium进行自动化测试时,借助html-testRunner 生成自动化测试报告 安装命令:pip install html-testRunner 二.测试 ...

  2. Python+Selenium----使用HTMLTestRunner.py生成自动化测试报告2(使用PyCharm )

    1.说明 在我前一篇文件(Python+Selenium----使用HTMLTestRunner.py生成自动化测试报告1(使用IDLE ))中简单的写明了,如何生产测试报告,但是使用IDLE很麻烦, ...

  3. Python&Selenium借助HTMLTestRunner生成自动化测试报告

    一.摘要 本篇博文介绍Python和Selenium进行自动化测试时,借助著名的HTMLTestRunner生成自动化测试报告 HTMLTestRunner.py百度很多,版本也很多,自行搜索下载放到 ...

  4. Python+Selenium----使用HTMLTestRunner.py生成自动化测试报告1(使用IDLE)

    1.说明 自动化测试报告是一个很重要的测试数据,网上看了一下,使用HTMLTestRunner.py生成自动化测试报告使用的比较多,但是呢,小白刚刚入手,不太懂,看了很多博客,终于生成了一个测试报告, ...

  5. mvn + testng + allure 生成自动化测试报告

    最近学了个新东西,使用java的testng测试框架做自动化测试.并且声称自动化报告. (1)创建maven工程 File-New-Other (2)创建testng类 当前import org.te ...

  6. 基于Python+Requests+Pytest+YAML+Allure实现接口自动化

    本项目实现接口自动化的技术选型:Python+Requests+Pytest+YAML+Allure ,主要是针对之前开发的一个接口项目来进行学习,通过 Python+Requests 来发送和处理H ...

  7. pytest(11)-Allure生成测试报告(一)

    Allure是一个开源的测试报告生成框架,提供了测试报告定制化功能,相较于我们之前使用过pytest-html插件生成的html格式的测试报告,通过Allure生成的报告更加规范.清晰.美观. pyt ...

  8. python+selenium+pytest+html报告

    背景:python+selenium+pytest+html报告 环境:我的是本机的Jenkins配置本机的代码 前提:要下载好HTML Publisher plugin插件[系统管理>管理插件 ...

  9. 【Python】使用Pytest集成Allure生成漂亮的图形测试报告

    前言 大概两个月前写过一篇<[测试设计]使用jenkins 插件Allure生成漂亮的自动化测试报告>的博客,但是其实Allure首先是一个可以独立运行的测试报告生成框架,然后才有了Jen ...

随机推荐

  1. 《剑指offer》链表专题 (牛客10.23)

    难度 题目 知识点 03. 返回链表的反序 vector 递归,C++ STL reverse() * 14. 链表中倒数第k个结点 指针操作 15. 反转链表 头插法,递归 16. 合并两个有序链表 ...

  2. 深度优先dfs与广度bfs优先搜索总结+例题

    DFS(Deep First Search)深度优先搜索 深度优先遍历(dfs)是对一个连通图进行遍历的算法.它的思想是从一个顶点开始,沿着一条路一直走到底,如果发现不能到达目标解,那就返回到上一个节 ...

  3. java中类加载的全过程及内存图分析

    类加载机制: jvm把class文件加载到内存,并对数据进行校验.解析和初始化,最终形成jvm可以直接使用的java类型的过程. (1)加载 将class文件字节码内容加载到内存中,并将这些静态数据转 ...

  4. 洛谷 题解 P2280 【[HNOI2003]激光炸弹】

    一道很好的二维前缀和模板题. 什么是二维前缀和? 从这张图可以看出前缀和的求法: Map[i][j]=Map[i-1][j]+Map[i][j-1]-Map[i-1][j-1]+Map[i][j]; ...

  5. 【AtCoder】AGC011

    AGC011 A - Airport Bus 大意:有N个人,每个人只能在\([T_i,T_i +K]\)这段区间乘车,每辆车安排C人,问最少安排几辆车 直接扫,遇到一个没有车的在\(T_i +K\) ...

  6. java如何读写json文件

    在实际项目开发中,有时会遇到一些全局的配置缓存,最好的做法是配置redis数据库作为数据缓存,而当未有配置redis服务器时,读取静态资源文件(如xml.json等)也是一种实现方式,但是这有一个弊端 ...

  7. redis集群(多机)分布

    一.实现原理 一致性哈希算法(Consistent Hashing): http://www.zsythink.net/archives/1182 二.配置两个redis服务,端口号要不一致 三.代码 ...

  8. C++11 bind和function用法

    function是一个template,定义于头文件functional中.通过function<int(int, int)> 声明一个function类型,它是“接受两个int参数.返回 ...

  9. k8s-搭建 EFK 日志系统

    搭建 EFK 日志系统 大家介绍了 Kubernetes 集群中的几种日志收集方案,Kubernetes 中比较流行的日志收集解决方案是 Elasticsearch.Fluentd 和 Kibana( ...

  10. iOS 定义多个参数函数的写法

    多个参数的写法 (方法的数据类型)函数名:(参数1数据类型)参数1的数值的名字 参数2的名字: (参数2数据类型) 参数2值的名字 …. ; 如  :  有三个参数 -(void)getdetailI ...