前言

大概两个月前写过一篇《【测试设计】使用jenkins 插件Allure生成漂亮的自动化测试报告》的博客,但是其实Allure首先是一个可以独立运行的测试报告生成框架,然后才有了Jenkins的集成插件。

这一次主要介绍如何把Allure集成到Python的Pytest单元测试框架中。

依赖包安装

Pytest

Pytest是Python的单元测试框架,非常方便和易用。可以规模化以及编写更加复杂的测试用例。安装方法如下:

pip install pytest

Allure Pytest Adaptor

Allure Pytest Adaptor是Pytest的一个插件,通过它我们可以生成Allure所需要的用于生成测试报告的数据。安装方法如下:

pip install pytest-allure-adaptor

改造基于Pytest的测试用例

为了使用Allure生成报告,需要在conftest.py和测试脚本中加入Allure特性。pytest-allure-adaptor官网中详细介绍了pytest-allure-adaptor所具有的功能。我们这次从实际入手,给大家介绍如何将其应用到自己的框架中。

首先,conftest.py中可以通过allure.environment方法将测试环境的信息输出到报告中,比如将测试时用的host和测试用的browser添加到测试报告中:

#!/usr/bin/env python

# coding=utf-8

import pytest

import allure

import yaml

@pytest.fixture(scope="session", autouse=True)

def env(request):

"""

Parse env config info

"""

root_dir = request.config.rootdir

config_path = '{0}/config/env_config.yml'.format(root_dir)

with open(config_path) as f:

env_config = yaml.load(f) # 读取配置文件

allure.environment(host=env_config['host']['domain']) # 测试报告中展示host

allure.environment(browser=env_config['host']['browser']) # 测试报告中展示browser

return env_config

接着,在测试脚本中,添加allure特性,直接看下面的脚本,我通过在脚本中添加注释的方式给大家解释allure特性的用途。比如测试脚本是test_shopping_trolley.py:

#!/usr/bin/env python

# coding=utf-8

import pytest

import allure

@allure.feature('购物车功能') # feature定义功能

class TestShoppingTrolley(object):

@allure.story('加入购物车') # story定义用户场景

def test_add_shopping_trolley(self):

login('刘春明', '密码') # 调用“步骤函数”

with allure.step("浏览商品"): # 将一个测试用例分成几个步骤,将步骤打印到测试报告中,步骤2

allure.attach('商品1', '刘春明') # attach可以打印一些附加信息

allure.attach('商品2', 'liuchunming')

with allure.step("点击商品"): # 将一个测试用例分成几个步骤,将步骤打印到测试报告中,步骤3

pass

with allure.step("校验结果"):

allure.attach('期望结果', '添加购物车成功')

allure.attach('实际结果', '添加购物车失败')

assert 'success' == 'failed'

@allure.story('修改购物车')

def test_edit_shopping_trolley(self):

pass

@pytest.mark.skipif(reason='本次不执行')

@allure.story('删除购物车')

def test_delete_shopping_trolley(self):

pass

@allure.step('用户登录') # 还可以将一个函数作为一个步骤,调用此函数时,报告中输出一个步骤,步骤名字通常是函数名,我把这样的函数叫“步骤函数”

def login(user, pwd):

print(user, pwd)

上面使用了Allure的几个特性:

@allure.feature # 用于定义被测试的功能,被测产品的需求点

@allure.story # 用于定义被测功能的用户场景,即子功能点

with allure.step # 用于将一个测试用例,分成几个步骤在报告中输出

allure.attach # 用于向测试报告中输入一些附加的信息,通常是一些测试数据信息

@pytest.allure.step # 用于将一些通用的函数作为测试步骤输出到报告,调用此函数的地方会向报告中输出步骤

生成测试报告

测试脚本中添加了Allure特性之后,在执行测试的时候需要先生成Allure报告所需要的测试结果数据。在py.test执行测试的时候,指定–alluredir选项及测试数据保存的目录即可:

运行测试

py.test test/ --alluredir ./result/

./result/中保存了本次测试的结果数据。另外,还可以执行指定features或者stories执行一部分测试用例,比如执行‘购物车功能’下的‘加入购物车’子功能的测试用例:

py.test test/ --allure_features='购物车功能' --allure_stories='加入购物车'

生成测试报告

接下来我们可以利用上面命令产生的测试数据使用命令行生成Allure测试报告了。命令如下:

allure generate ./result/ -o ./report/ --clean

打开测试报告

通过下面的命令打开测试报告:

allure open -h 127.0.0.1 -p 8083 ./report/

测试报告会使用默认的浏览器打开,下图是github上面的一个图形示例

python怎么输出图像测试_【Python】使用Pytest集成Allure生成漂亮的图形测试报告相关推荐

  1. python怎么输出图像测试_如何在python中对作为输入和输出的图像进行单元测试?...

    我正在用Python对对象检测code(接受答案)进行单元测试.我知道在单元测试中,我们基本上是把测试参数放入我们在程序中定义的函数,然后输入预期的结果.如果预期的结果是输出,我们得到OK,否则,我们 ...

  2. html兴趣测试生成图表源码,用 Pytest+Allure 生成漂亮的 HTML 图形化测试报告

    原标题:用 Pytest+Allure 生成漂亮的 HTML 图形化测试报告 对于软件测试来说,测试报告是非常重要的工作产出.一个漂亮.清晰.格式规范的测试报告,能够减少开发人员和测试人员的沟通成本. ...

  3. 图形化编写html,怎么使用Pytest+Allure生成漂亮的HTML图形化测试报告

    怎么使用Pytest+Allure生成漂亮的HTML图形化测试报告 发布时间:2021-05-22 14:13:52 来源:亿速云 阅读:95 作者:小新 这篇文章给大家分享的是有关怎么使用Pytes ...

  4. python怎么输出浮点数_【数会小课堂】Python知识第二弹

    通过上次的学习我们已经对python有了一定程度的了解,今天,我们来进一步学习有关Python中的变量与简单数据类型的内容. 01 Python中的变量 变量一般是用于储存信息的字符.变量在大多数编程 ...

  5. python 打开程序 最大化_@Python 程序员,如何最大化提升编码效率?

    作者 | Enoch CK 译者 | 刘畅 整理 | Jane 出品 | Python大本营 [导语]无论你是一位高级的AI工程师还是学生,你都会在工作或学习过程中需要用到 Python.自 1991 ...

  6. python多进程编程实例_[python] Python多进程编程技术实例分析

    这篇文章主要介绍了Python多进程编程技术,包括了线程.队列.同步等概念及相关的技巧总结,需要的朋友可以参考下 本文以实例形式分析了Python多进程编程技术,有助于进一步Python程序设计技巧. ...

  7. python查看excel编码格式_[Python]实现处理读写xlsx xls excel文件格式(含中文处理方法)...

    最近有个需求要处理excel 格式的数据,数据量比较大.用传统的语言似乎不太好处理,于是改用python实现,这里记录一下实现过程. 首先,科普一下xlsx xls的excel文件区别是什么. xls ...

  8. python快速爬虫视频_“python怎么快速爬虫视频“python 爬网页视频教程

    用python怎样爬网页 # coding:utf8 import cookielib import urllib2 url = "http://blog.uouo123.com" ...

  9. python朋友圈刷屏_“Python太火了!请救救Java!”9万程序员刷屏朋友圈 !

    没想到有生之年,笔者能观察到"霸主陨落"的过程,继PLPY4月榜单官宣,Python躺赢,再度"夺"冠,实力甩下Java和C后,近期,Stack Overflo ...

最新文章

  1. 争自动驾驶领头羊还是确保技术安全?欧美选择不同
  2. go gdb调试 参数设置 减小执行文件体积
  3. 这个医疗AI准确率突破天际,招来了铺天盖地的质疑
  4. 高可用系统架构设计 技术方案
  5. vs2008C1902程序数据库管理不匹配
  6. 如何在React Native和Firebase中设置Google登录
  7. 如何订阅MQTT服务器历史消息,MQTT协议之消息订阅
  8. 网站点赞 评论 回复 数据库设计
  9. 转速测试软件app,实时显示行车速度app手机版-手机实时行车速度显示app(gps车速表)v1.6最新版_新绿资源网...
  10. crnn pytorch 训练、测试
  11. java 组播_java使用MulticastSocket实现组播
  12. yytextview 复制_Swift iOS : YYText显示微博@文字的方法
  13. 计算机辅助设计三是什么,计算机辅助设计提纲部分答案(三)
  14. 输入输出工具技术(ITTO)要背吗?——软考高项笔记8
  15. Python中的程序控制结构 顺序结构和选择结构
  16. 区间类动态规划(dp)
  17. android 无法播放mp4视频,Android VideoView无法播放视频错误,特别是.mp4
  18. android输入法隐藏状态栏,android 输入法设置显示隐藏
  19. opencv判断一个点是否在轮廓内pointPolygonTest的用法
  20. NAT与PAT的区别

热门文章

  1. 乱贴小广告违法 有人仍一意孤行
  2. ZN-IRF03机器人RFID分拣实训系统
  3. 读《谨言慎行的力量 - 向南怀瑾学律己》
  4. 创业知识(四):打造超强执行力团队(转载)
  5. 三菱PLC字符串相关
  6. NMQ消息队列—中间件
  7. 通过训练获得最优量化区间——Quantization Interval Learning
  8. 英国AI研究员揭开真相,中国人工智能为何能发展迅猛?
  9. 日本半导体的隐形冠军
  10. SQL Server 常见的7种约束以及where条件表达式