Python&Selenium&pytest借助allure生成自动化测试报告
一、摘要
本篇博文将介绍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 >= 50
+ where 39 = add(17, 22)</message>
<stack-trace>def test_add4():
> assert add(17,22) >= 50
E assert 39 >= 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():
> 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生成自动化测试报告的更多相关文章
- Python&Selenium借助html-testRunner生成自动化测试报告
一.摘要 本博文将介绍Python和Selenium进行自动化测试时,借助html-testRunner 生成自动化测试报告 安装命令:pip install html-testRunner 二.测试 ...
- Python+Selenium----使用HTMLTestRunner.py生成自动化测试报告2(使用PyCharm )
1.说明 在我前一篇文件(Python+Selenium----使用HTMLTestRunner.py生成自动化测试报告1(使用IDLE ))中简单的写明了,如何生产测试报告,但是使用IDLE很麻烦, ...
- Python&Selenium借助HTMLTestRunner生成自动化测试报告
一.摘要 本篇博文介绍Python和Selenium进行自动化测试时,借助著名的HTMLTestRunner生成自动化测试报告 HTMLTestRunner.py百度很多,版本也很多,自行搜索下载放到 ...
- Python+Selenium----使用HTMLTestRunner.py生成自动化测试报告1(使用IDLE)
1.说明 自动化测试报告是一个很重要的测试数据,网上看了一下,使用HTMLTestRunner.py生成自动化测试报告使用的比较多,但是呢,小白刚刚入手,不太懂,看了很多博客,终于生成了一个测试报告, ...
- mvn + testng + allure 生成自动化测试报告
最近学了个新东西,使用java的testng测试框架做自动化测试.并且声称自动化报告. (1)创建maven工程 File-New-Other (2)创建testng类 当前import org.te ...
- 基于Python+Requests+Pytest+YAML+Allure实现接口自动化
本项目实现接口自动化的技术选型:Python+Requests+Pytest+YAML+Allure ,主要是针对之前开发的一个接口项目来进行学习,通过 Python+Requests 来发送和处理H ...
- pytest(11)-Allure生成测试报告(一)
Allure是一个开源的测试报告生成框架,提供了测试报告定制化功能,相较于我们之前使用过pytest-html插件生成的html格式的测试报告,通过Allure生成的报告更加规范.清晰.美观. pyt ...
- python+selenium+pytest+html报告
背景:python+selenium+pytest+html报告 环境:我的是本机的Jenkins配置本机的代码 前提:要下载好HTML Publisher plugin插件[系统管理>管理插件 ...
- 【Python】使用Pytest集成Allure生成漂亮的图形测试报告
前言 大概两个月前写过一篇<[测试设计]使用jenkins 插件Allure生成漂亮的自动化测试报告>的博客,但是其实Allure首先是一个可以独立运行的测试报告生成框架,然后才有了Jen ...
随机推荐
- 【Qt开发】 QT:make: Nothing to be done for `first'和error:QtSql:No such file or directory
http://blog.csdn.NET/heqiuya/article/details/7774208 这是QT编程中常见的两个编译错误.可能你的代码在window下编译能正常通过,可是到到Linu ...
- TensorFlow.ZC尝试
1.资料: https://github.com/protocolbuffers/protobuf/releases https://pythonprogramming.net/introductio ...
- [CF132C] Logo Turtle
[CF132C] Logo Turtle , Luogu A turtle moves following by logos.(length is \(N\)) \(F\) means "m ...
- 《MIT 6.828 Lab 1 Exercise 4》实验报告
本实验链接:mit 6.828 lab1 Exercise 4. 题目 Exercise 4. Read about programming with pointers in C. The best ...
- B8 Concurrent JDK中的乐观锁与原子类
[概述] 乐观锁采用的是一种无锁的思想,总是假设最好的情况,认为一个事务在读取数据的时候,不会有别的事务对数据进行修改,只需要在修改数据的时候判断原数据数据是否已经被修改了.JDK 中 java.ut ...
- loj 10117 简单题
#include<iostream> #include<cstdio> #include<cctype> using namespace std; inline i ...
- dfs/bfs专项训练
A.棋盘问题——poj1321 在一个给定形状的棋盘(形状可能是不规则的)上面摆放棋子,棋子没有区别.要求摆放时任意的两个棋子不能放在棋盘中的同一行或者同一列,请编程求解对于给定形状和大小的棋盘,摆放 ...
- Android试题
1. Binder:例子: https://blog.csdn.net/qq_33208587/article/details/82767720
- 恩佐夫博弈+JAVA大数
题意:http://acm.hdu.edu.cn/showproblem.php?pid=5973 根号5复制后200位就行了,因为BigDecimal不支持开根号,除法二分开根. import ja ...
- vue—组件通信,ref
组件通信: 父组件传递子组件: 把需要的数据 传递给 子组件的数据,以数据绑定(v-bind)的形式,传递到子组件内部,供子组件使用,缩写(:) 动态传递: 第一步:在父组件中的子组件标签中进行动态的 ...