pytest两种生成测试报告的方法——html

这篇具有很好参考价值的文章主要介绍了pytest两种生成测试报告的方法——html。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

pytest有两种生成测试报告的方法(html和allure),今天就给大家一介绍下html

一.pytest-html基本语法

1.安装:pip install pytest-html

2.查看版本:pip show pytest-html

3.生成测试报告基本语法:

语法一:pytest --html=生成报告的url 运行用例的.py文件

语法二:pytest --html=生成报告的url --self-contained-html 运行用例的.py文件

二.实例

1.创建一个test_pytestHtml.py文件,编写几条用例(忽略警告)

pytest两种生成测试报告的方法——html
2.在Terminal运行命令:pytest --html=生成报告的url 运行用例的.py文件,运行成功后,这个时候我们去

pytest两种生成测试报告的方法——html
生成报告的url下可以看见生成两个文件,一个是我们生成的html报告,另一个是assets文件,里面存放的是

pytest两种生成测试报告的方法——html
css文件,打开素材的html报告后可以看见用例的执行情况

pytest两种生成测试报告的方法——html
3.我们再在Terminal运行命令:pytest --html=生成报告的url --self-contained-html 运行用例的.py文件,

同样运行成功后,我们去看下生成的文件,发现只有html生成,并没有assets文件,这是因为css语法

写在了html文件中,没有单独放出来。所以方便以后报告的发送,建议使用第二中语法。

三.修改生成的测试报告

(挂钩用法见pytest官方:https://docs.pytest.org/en/latest/reference/reference.html#hooks)

1.环境的修改

我们可以看到在html中248行,环境是以表格的形式呈现出来的,如果我们想删除某些默认环境或者添加自

pytest两种生成测试报告的方法——html
己想要的环境,可在根目录下创建conftest.py文件,如下图,pytest_configure(config): 许插件和conftest文

pytest两种生成测试报告的方法——html
件执行初始配置。我在再来重新生成html报告可以看见我们在Environment下修改的内容

pytest两种生成测试报告的方法——html
2.概括的修改

可以看到源代码中264行表示的是概括,但默认的内容只有用例总数和运行时间,如果我们想要增加自己想要的c

pytest两种生成测试报告的方法——html
信息模块,可在conftest.py下编写函数,再次运行生成html文件就可看见需要的内容了

pytest两种生成测试报告的方法——html
pytest两种生成测试报告的方法——html
3.标题的修改

同样在conftest文件下编写pytest_html_report_title函数,如下

pytest两种生成测试报告的方法——html
allure(如果可以的话建议使用allure,美观+高级+好用)
一.环境配置

1.下载jdk配置java运行环境,下载地址:https://www.oracle.com/java/technologies/downloads/#jdk18-windows

2.下载安装完成后配置java环境变量(属性>高级设置>环境变量>新建),添加JAVA_HOME。

pytest两种生成测试报告的方法——html
在path下里添加:%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin

pytest两种生成测试报告的方法——html
3.配置完成后可在dos窗口输入javac,java -version,能输出版本号及相关指令即安装配置成功

4.下载allure工具:https://repo.maven.apache.org/maven2/io/qameta/allure/allure-commandline/,下载成功

后配置环境变量,path下添加allure的bin文件所在目录

pytest两种生成测试报告的方法——html
5.配置完成在dos创建输入allure有相关内容时即安装成功

6.安装allure-pytest工具,打开你使用的编程工具,这里以pycharm为例,在Terminal输入pip install allure-pytest

二.allure报告的生成指令

1.生成json文件:pytest -q --alluredir=生成json文件的路径 需要运行的case路径(说明:-q简要输出)

2.将生成的json文件转出html格式

(1)指定路径生成html报告:allure generate -o 生成html报告的路径 json文件路径

(2)默认路径生成html报告:allure generate -clear json文件路径(说明:默认路径

         为allure-report,clear清空该路径原有的报告)

(3)open及serve用法

        serve:allure serve  -o  生成html报告的路径    json文件路径(说明:与generater

                    不同的是,serve生成html后会自动在浏览器打开该报告)

        open:allure open  -h  ip地址  html路径(说明:打开生成的html报告)

        注:serve和open运行时会自动打开一个java进程,且只能手动关闭,因此多次使用

              serve和open会增加内存消耗

pytest两种生成测试报告的方法——html
三.allure报告的用法(本次介绍下面几种常用的allure方法)

pytest两种生成测试报告的方法——html
1.@allure.epic(),allure.feature(),allure.story()的使用

(1)创建一个test.two.py文件,写法如下

import allure<br><br>
@allure.epic("我是一级目录")
@allure.feature("我是二级目录")
@allure.story("我是三级目录")
class TestDome:
    def test_one(self):
        print("我是test_one")
        assert True
         
    def test_two(self):
        print("我是test_two")
        assert False

(2)生成json文件:pytest --alluredir=./report/2022-5-22 testcase/test_two.py

(3)将生成的json文件转出html:allure generate -o ./allure-report/2022-5-22 ./report/2022-5-22

此时我们可以看见allrue-report目录下有个2022-5-22/index.html,打开后在Behaviors下可看见运行case

pytest两种生成测试报告的方法——html
2.@allure.title()的使用

(1)从上面可以看出每条case的标题都是函数名字(如:test_one,test_two),我们可以用title修改默认标题

class TestDome:
    @allure.title("我是one")
    def test_one(self):
        print("我是test_one")
        assert True
 
    @allure.title("我是two")
    def test_two(self):
        print("我是test_two")
        assert False

(2)运行后的结果

pytest两种生成测试报告的方法——html
3.@allure.testcase(),@allure.issue(),@allure.link()用法

(1)allure作用与class上,那么该class下所有的函数都会被定义到,如果allure作用于

每个函数上,那么只对该函数生效

@allure.testcase("path url", name="我是存放测试用例的地址")
@allure.issue("bug url", name="bug地址")
@allure.link("link url", name="链接地址")
class TestDome:
    @allure.title("我是one")
    def test_one(self):
        print("我是test_one")
        assert True
 
    @allure.title("我是two")
    def test_two(self):
        print("我是test_two")
        assert False

(2)运行后的结果,可以看出case右侧多出links模块

pytest两种生成测试报告的方法——html
4.@allure.description()用法

(1)用法一:使用description编写case描述

import pytest
import allure
 
 
@allure.epic("我是一级目录")
@allure.feature("我是二级目录")
@allure.story("我是三级目录")
@allure.testcase("path url", name="我是存放测试用例的地址")
@allure.issue("bug url", name="bug地址")
@allure.link("link url", name="链接地址")
class TestDome:
    @allure.description("我是来描述test_one这条case的")
    @allure.title("我是one")
    def test_one(self):
        print("我是test_one")
        assert True
 
    @allure.title("我是two")
    def test_two(self):
        print("我是test_two")
        assert False

运行后该条case右侧overview多出了description模块

pytest两种生成测试报告的方法——html
(2)用法二:无需使用@allure.description(),可在函数中使用(“”“”“”),生成测试报告会自动获取

import pytest
import allure
 
 
@allure.epic("我是一级目录")
@allure.feature("我是二级目录")
@allure.story("我是三级目录")
@allure.testcase("path url", name="我是存放测试用例的地址")
@allure.issue("bug url", name="bug地址")
@allure.link("link url", name="链接地址")
class TestDome:
    @allure.title("我是one")
    def test_one(self):
        """我是test_one实例方法,该方法是TestDome第一个实例方法"""
        print("我是test_one")
        assert True
 
    @allure.title("我是two")
    def test_two(self):
        print("我是test_two")
        assert False
 
# pytest --alluredir=./report/2022-5-22-02  testcase/test_two.py
# allure generate -o ./allure-report/2022-5-22-02  ./report/2022-5-22-02

运行后的结果

pytest两种生成测试报告的方法——html
5.@allure.step()用法

(1)该方法在函数外使用时直接@allure.step()即可。要是在函数中使用,需要with allure.step():

import pytest
import allure
 
 
class TestDome:
    @allure.step("步骤一")
    @allure.step("步骤二")
    @allure.step("步骤三")
    def test_one(self):
        print("我是test_one")
        assert True
 
    def test_two(self):
        print("我是test_two")
        assert False

import pytest
import allure
 
 
class TestDome:
 
    def test_one(self):
        with allure.step("步骤一:打开登录页面"):
            with allure.step("步骤二:输入正确的用户名和密码"):
                with allure.step("步骤三:点击登录"):
                    assert True
 
    def test_two(self):
        print("我是test_two")
        assert False

运行后结果,可以看到test body下的运行步骤

pytest两种生成测试报告的方法——html
6.@allure.severity()用法

(1)severity有四种等级

pytest两种生成测试报告的方法——html
(2)具体用法:@allure.severity(“等级”)

import pytest
import allure
 
 
class TestDome:
    @allure.severity("trivial")
    def test_one(self):
        with allure.step("步骤一:打开登录页面"):
            with allure.step("步骤二:输入正确的用户名和密码"):
                with allure.step("步骤三:点击登录"):
                    assert True
 
    def test_two(self):
        print("我是test_two")
        assert False

(3)运行结果,如果不手动定义的话,默认为normal bug

pytest两种生成测试报告的方法——html
四.allure和pytest参数连用

1.@pyteat.mark.parametrize参数化

import pytest
import allure
 
 
class TestDome:
    @pytest.mark.parametrize("param", [{"name": "李明", "age": 18}, {"name": "李华", "age": 17}])
    def test_one(self,param):
        with allure.step("步骤一:打开登录页面"):
            with allure.step("步骤二:输入正确的用户名和密码"):
                with allure.step("步骤三:点击登录"):
                    assert True
 
    def test_two(self):
        print("我是test_two")
        assert False

运行后结果,可以看出这里test_one运行了两次,成功测试报告后参数值会自己填充在parameters中

pytest两种生成测试报告的方法——html
2.skip和xfail

(1)我们先来了解下这两种方法的定义

@pytest.mark.skip()来跳过该条case不执行,可以看出以下代码运行后并不会执行test_one case

import pytest
import allure

class TestDome:
@pytest.mark.skip(reason=“跳过该条case”)
def test_one(self):
print(“我是test_one”)
assert True

def test_two(self):
print(“我是test_two”)
assert True

pytest两种生成测试报告的方法——html
@pytest.mark.xfail()标记预期结果值

import pytest
import allure
 
 
class TestDome:
    @pytest.mark.xfail(reason="预期返回True")
    def test_one(self):
        print("我是test_one")
        assert True
 
    def test_two1(self):
        print("我是test_two")
        assert True

pytest两种生成测试报告的方法——html
(2)接下来进入正题,skip and xfail与alure一起使用这里直接贴图吧,具体写法和上面一致
pytest两种生成测试报告的方法——html
这里可以看出test_one case跳过后并没有运行,置灰显示

pytest两种生成测试报告的方法——html

五.在allure报告中打印日志和print内容

1.首先我们需要先封装下logging日志,具体写法如下(这里你定义一个函数,编写在函数中)

import logging
import os
 
logger = logging.getLogger("weixin_api_log")  # 设置日志名称
logger.setLevel(logging.DEBUG)  # 设置日志等级
formats = logging.Formatter("[%(asctime)s] [%(levelname)s] %(message)s")  # 设置打印格式
file_url = logging.FileHandler("C:/Users/XXX/PycharmProjects/weixin_api/log/weixin.log", mode="a+",
                               encoding="utf8")  # log文件路径
# file_url1 = logging.StreamHandler()  # 操作台打印
file_url.setFormatter(formats)  # 赋予打印格式
# file_url1.setFormatter(formats)
 
logger.addHandler(file_url)
# logger.addHandler(file_url1)

2.创建test_one.py调用logging

import pytest
import allure
from commom.log import logger
import datetime
 
 
class TestDome:
    def test_one(self):
        logger.debug(f"日志时间:{datetime.datetime.now()}")
        print("我是test_one")
        assert True
 
    def test_two1(self):
        print("我是test_two")
        assert True

3.运行结果(这里需要注意的是,运行是不用加-s参数,如果加的话,print打印内容不会再报告中显示)

pytest两种生成测试报告的方法——html
在test body下log里会展示打印的日志,stdout里展示的是print打印的内容

最后:下方这份完整的自动化测试视频学习教程已经整理上传完成,朋友们如果需要可以自行免费领取 【保证100%免费】

pytest两种生成测试报告的方法——html

pytest两种生成测试报告的方法——html)文章来源地址https://www.toymoban.com/news/detail-479728.html

到了这里,关于pytest两种生成测试报告的方法——html的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 使用Pytest集成Allure生成漂亮的图形测试报告

    目录 前言 依赖包安装 Pytest Allure Pytest Adaptor 改造基于Pytest的测试用例 生成测试报告 运行测试 生成测试报告 打开测试报告  资料获取方法 之前写过一篇生成测试报告的博客,但是其实Allure首先是一个可以独立运行的测试报告生成框架,然后才有了Jenkins的集成插件。 这一次

    2024年02月13日
    浏览(22)
  • Pytest模式执行python脚本不生成allure测试报告

     1.安装allure 下载allure的zip安装包 将allure.zip解压到python的lib目录中 将allure的bin路径添加到环境变量path中(注意:配置环境变量后,一定要重启电脑。因为环境变量没生效,我搞了半天在pycharm不能生成报告,在cmd中可以生成报告) 安装allure-pytest,命令为:  pip install allure-pytes

    2024年02月11日
    浏览(30)
  • python代码实现判断三角形类型,使用pytest进行代码测试,生成allure测试报告

    一、python代码判断三角形类型 写代码之前首先我们要知道满足三角形的条件: 前提条件:三角形边长都为大于0的数字 构成三角形:两边之和大于第三边 即 a+b c  and a+cb and  b+ca   (此三个条件需要同时满足) 满足构成三角形之后,要考虑构成三角形的类型: 三角形分为:

    2024年02月05日
    浏览(38)
  • 从0到1精通自动化测试,pytest自动化测试框架,allure2生成html报告(史上最详细)(九)

    allure是一个report框架,支持java的Junit/testng等框架,当然也可以支持python的pytest框架,也可以集成到Jenkins上展示高大上的报告界面。 环境准备: python3.6 windows环境 pycharm pytest-allure-adaptor allure2.7.0 java1.8 pip安装 pytest-allure-adaptor,github地址:https://github.com/allure-framework/allure-pytest 如

    2024年02月11日
    浏览(30)
  • pytest测试框架——allure报告

    Allure 是由Java 语言开发的一个轻量级,灵活的测试报告工具。 Allure多平台的 Report框架。 Allure 支持多语言,包括 python、JaveScript、PHP、Ruby 等。 可以为开发/测试/管理等人员提供详尽的的测试报告,包括测试类别、测试步骤、日志、图片、视 频等。 可以为管理层提供高水准的

    2023年04月14日
    浏览(99)
  • Pytest-Allure测试报告

    此处我选择下载最新的,版本上可以选择不是最新的,2.9.0的。下载zip或者tgz后缀格式的都可以。 找到解压缩后的包》》》找到环境变量》》》找到系统环境变量》》》找到Path》》》把allure的bin目录添加进去 allure需要依赖JDK,所以,电脑需要先配置好JDK环境。 首先,配置文

    2024年02月09日
    浏览(33)
  • 软件测试/测试开发丨Pytest和Allure报告 学习笔记

    本文为霍格沃兹测试开发学社学员学习笔记分享 原文链接:https://ceshiren.com/t/topic/26755 类型 规则 文件 test_开头 或者 _test 结尾 类 Test 开头 方法/函数 test_开头 注意:测试类中不可以添加 __init__ 构造函数 注意:pytest对于测试包的命名没有要求 方法:类中定义的函数 函数:类

    2024年02月10日
    浏览(44)
  • Pytest自动化测试框架之Allure报告

    Allure Framework是一种灵活的、轻量级、多语言测试报告工具。 不仅可以以简洁的网络报告形式非常简洁地显示已测试的内容, 而且还允许参与开发过程的每个人从日常执行中提取最大程度的有用信息和测试。 从开发/测试的角度来看: Allure报告可以快速查看到缺陷点,可以将

    2024年02月06日
    浏览(45)
  • 【Pytest】Allure测试报告的安装与环境配置

    Allure基于Java开发,因此需要提前安装Java 8 或以上版本的环境。 jdk下载地址:http://www.codebaoku.com/jdk/jdk-oracle-jdk1-8.html 选择jdk8,下载完成: 双击进行安装,安装过程中注意记住选择的路径(有一个jdk包和一个jre包的保存路径选择,我更改了路径分别到D:javaJDK和D:javaJRE)。

    2024年02月16日
    浏览(33)
  • Pytest实现用例失败截图并且在测试报告中可以查看

    Pytest+Selenium是UI自动化常用得框架,结合Allure可以给出优美得测试报告,失败的case可以查看错误日志,但是对于UI自动化来说,最直观的还是可以通过截图来查看失败原因,更方便测试人员定位问题。 钩子函数pytest_runtest_makereport pytest提供了pytest_runtest_makereport这个方法,可以

    2024年02月09日
    浏览(29)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包