Python&Selenium&pytest借助allure生成自动化测试报告

davieyang 2018-12-10 原文

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 &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生成到哪个路径下,如下图所示

五、查看报告

 六、报告样式

还可以切换语言

 

发表于 2018-12-10 13:35 davieyang 阅读() 评论() 编辑 收藏

 

版权声明:本文为davieyang原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/davieyang/p/10095980.html

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

  1. Selenium是如何操纵浏览器的?

    前言 上一篇文章《selenium webdriver 是怎么运行的》用了一个简单的例子——搭出租车,形象地讲 […]...

  2. 章节十四、10-按键事件

    一、如何按键盘上的按键: 1 package keypress; 2 3 import static org. […]...

  3. Selenium3 + Python3自动化测试系列四——鼠标事件和键盘事件

    一、鼠标事件 在 WebDriver 中, 将这些关于鼠标操作的方法封装在 ActionChains 类提供。 […]...

  4. Selenium Select下拉框

    在web自动化测试中,经常会遇到下拉框,对列出的选项进行选择,或者判断选择的选项,本文将介绍如何使用Selen […]...

  5. python爬虫24 | 搞事情了,用 Appium 爬取你的微信朋友圈。

    .radius_avatar { display: inline-block; background-colo […]...

  6. Appium Studio 初体验(windows做ios自动化,录制appium脚本)

        偶然的机会遇到了这个工具——Appium Studio, 在官网是这么解释的    Get your […]...

  7. Python + Selenium + AutoIt 模拟键盘实现另存为、上传、下载操作详解

    前言 在web页面中,可以使用selenium的定位方式来识别元素,从而来实现页面中的自动化,但对于页面中弹出 […]...

  8. 11、pytest — 测试的参数化

    目录 1. @pytest.mark.parametrize标记 1.1. empty_parameter_s […]...

随机推荐

  1. Vue图片懒加载插件

    图片懒加载是一个很常用的功能,特别是一些电商平台,这对性能优化至关重要。今天就用vue来实现一个图片懒加载的插 […]...

  2. 我和小伙伴在北京的租房经历

    转载自本人的微信公众号 https://mp.weixin.qq.com/s/OWtnySEHtqcVuJn4 […]...

  3. Spring源码剖析2:Spring IOC容器的加载过程

    spring ioc 容器的加载流程 1.目标:熟练使用spring,并分析其源码,了解其中的思想。这篇主要介 […]...

  4. vmware虚拟机 u盘启动

    http://jingyan.baidu.com/article/ff4116259bbf7c12e48237 […]...

  5. MySQL 性能调优——SQL 查询优化

    如何设计最优的数据库表结构,如何建立最好的索引,以及如何扩展数据库的查询,这些对于高性能来说都是必不可少的。但 […]...

  6. npx的使用方法、场景

    目录 npx使用教程 npm与npx的概念 npx的使用场景(对比npm的一些优势) 使用场景1: 想用项目中 […]...

  7. json对象和json字符串相互转换

    1.将JSON字符串转换为JSON对象 var data = JSON.parse(str); // JSON […]...

  8. Jmeter接口测试+压力测试

    转自https://blog.csdn.net/github_27109687/article/details […]...

展开目录

目录导航