Py学习  »  Python

刚测试完 Python 代码,奉上一份美美的报告

编程派 • 6 年前 • 722 次点击  

文 | Crisimple 出处 | 掘金

严格意义上讲 Allure 不算是测试框架,但是它是生成漂亮测试报告的开源工具,搭配 Pytest 测试框架食用更搭。

也就是说 Allure 是在 Pytest 执行完生成的测试数据的基础上,对测试数据进行处理统计,生成格式统一、美观的测试报告。

一、Allure初识

1. 什么是 Allure

Allure 是由Qameta Software团队开源的一款旨在于解决让每个人能更容易生成并更简洁阅读的测试报告框架。它支持大多数的测试框架,如:Pytest、TestNG等,简单易用便于集成。

2. Allure环境搭建

工欲善其事必先利其器,Allure 框架基于其他的测试框架使用,例如:Pytest。

  1. # windows env

  2. source env/Scripts/activate


  3. # 安装 pytest 和 pytest-allure-adaptor

  4. pip3 install pytest

  5. # Allure Pytest Adaptor是Pytest的一个插件(比较旧的一个插件)

  6. # allure-pytest 比较新一点,建议使用

  7. pip3 install pytest-allure-adaptor

  8. pip3 instal allure-pytest


  9. # 安装Allure工具,主要是讲pytest的测试数据转换成HTML数据

  10. # linux环境安装

  11. # 现将allure源添加到linux的源里

  12. sudo apt-add-repository ppa:qameta/allure

  13. # 更新本地源

  14. sudo apt-get update

  15. # 安装allure,[allure无法使用的解决方案](https://askubuntu.com/questions/1168821/allure-report-installed-but-not-findable)

  16. sudo apt-get install allure

  17. # 上面的方法不行的话,用下面的方法

  18. curl -o allure-2.6.0.tgz -Ls https://dl.bintray.com/qameta/generic/io/qameta/allure/allure/2.6.0/allure-2.6.0.tgz

  19. sudo tar -zxvf allure- 2.6.0.tgz -C /opt/

  20. sudo ln -s /opt/allure-2.6.0/bin/allure /usr/bin/allure

  21. allure --version



  22. # Windows 下安装就麻烦点,可以使用 Scoop 工具(Chocolatey工具不知道为什么安装不了),不管了官方推荐使用 Scoop 安装就使用 Scoop 安装得了

  23. # 先安装[Scoop](https://juejin.im/entry/5def7a2ff265da33f2164048/detail)

  24. # 检查sccop是否安装成功

  25. scoop --version


  26. # 安装 allure

  27. scoop install allure

  28. # 查看allure是否安装成功

  29. allure --version

二、Pytest集成Allure

Allure要生效需要在测试文件和测试通配文件(conftest.py)中配置 allure。

1. allure的特性

Aullre的几个特性:

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

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

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

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

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

2. pytest集成allure

测试文件示例,生成测试数据,进一步生成 allure 测试报告

  1. #!/usr/bin/env python

  2. # -*- encoding: utf-8 -*-

  3. """

  4. @File : test_allure_shopping.py

  5. @Time : 2019/12/1017:34

  6. @Author : Crisimple

  7. @Github : https://crisimple.github.io/

  8. @Contact : Crisimple@foxmail.com

  9. @License : (C)Copyright 2017-2019, Micro-Circle

  10. @Desc : None

  11. """


  12. import pytest

  13. import allure



  14. # allure.feature 定义功能

  15. @allure.feature("报告购物车")

  16. class TestAllure( object):

  17. # 定义用户场景

  18. @allure.story("加入购物车")

  19. def test_add_goods_cart(self):

  20. # 调用步骤函数

  21. login("crisimple", "123456")


  22. # 将测试用例分成几个步骤,将测试步骤打印到测试报告中,步骤二

  23. with allure.step("浏览商品"):

  24. # allure.attach--打印一些附加信息

  25. allure.attach( "商品1", "C")

  26. allure.attach("商品2", "C")


  27. # 步骤三

  28. with allure.step("加入商品"):

  29. allure.attach("商品1", 2)

  30. allure.attach("商品2", 3)


  31. # 步骤四

  32. with allure.step ("校验商品"):

  33. allure.attach("商品1加入成功", "共2个")

  34. allure.attach("商品2加入失败", "共0个")


  35. @allure.story("继续购物")

  36. def test_continue_shopping_cart(self):

  37. login("crisimple", "123456")

  38. allure.attach("商品3", 4)

  39. print("继续购物成功")


  40. @allure.story("减少商品失败")

  41. def test_edit_shopping_cart(self):

  42. login("crisimple", "123")

  43. assert 0


  44. @pytest.mark.skip(reason="删除购物车不执行")

  45. @allure.story("删除购物车")

  46. def test_delete_shopping_cart(self):

  47. login("crisimple", "123")

  48. print()



  49. # 将函数作为一个步骤,调用此函数时,报告中输出一个步骤,步骤名称通常时函数名,这样的函数通常称为步骤函数

  50. @allure.step("用户登录")

  51. def login(user, passwd):

  52. if user == "crisimple" and passwd == "123456":

  53. print(user, passwd)

  54. print("登录成功")

  55. else:

  56. print(user, passwd)

  57. print("登录失败,请重新尝试")

三、Allure生成测试报告

1. pytest生成测试报告

  1. # 执行全部的测试用例

  2. pytest ./Allure/test_allure_shoping.py --alluredir ./Allure/result/


  3. # 执行指定features或者stories执行一部分测试用例,比如执行‘报告购物车’下的‘加入购物车’子功能的测试用例

  4. pytest ./ Allure/test_allure_shopping.py --allure_features="报告购物车" --allure_stories="加入购物车" ../Allure/part_result/

2. Allure生成测试报告

  1. # 生成测试报告

  2. allure generate ./Alluer/result/ -o ./Allure/report/ --clean


  3. # 打开测试报告

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

打开测试报告,牛皮的是可以切换中文版本

四、Allure与Jenkins结合

对于成规模的测试团队会把自动化测试部署集成到Jenkins中,构建成自动化部署。

4.1 Jenkins配置Allure

安装Allure插件

4.2 创建job

配置路径必须配置一致

  1. source env/bin/activate

  2. echo "**************Welcome to env**************"


  3. echo "**************pytest create test data**************"

  4. pytest /完整路径/Allure/test_allure_shopping.py --alluredir ${WORKSPACE}/allure -results/

  5. echo "**************report has generated done**************"

4.3 执行工程

立即构建工程即可。


原文链接:https://juejin.im/post/5def3d64f265da33e67b3352


签到送书计划

自律改变自我!第①期打卡送书活动启动!

我发起了一个签到送书活动,活动结束后将送出 5 本 Python 技术书。签到次数越多,中奖概率越高。活动详情,请点击:自律改变自我!第①期打卡送书活动启动!

下面是今天的签到二维码:

回复下方「关键词」,获取优质资源


回复关键词「 pybook03」,立即获取主页君与小伙伴一起翻译的《Think Python 2e》电子版

回复关键词「入门资料」,立即获取主页君整理的 10 本 Python 入门书的电子版

回复关键词「m」,立即获取Python精选优质文章合集

回复关键词「book 数字」,将数字替换成 0 及以上数字,有惊喜好礼哦~


推荐阅读



题图:pexels,CC0 授权。

好文和朋友一起看~
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/51179