阅读 109

mac配置pytest+allure2生成测试报告(Pycharm运行)

最近下载了一个开源的接口自动化测试框架(yaml+pytest+request+allure)想要理解后纳为己用。
我的电脑是mac,运行工具用的pycharm,运行时遇到了一些问题,本篇就是整理下pytest+allure具体配置步骤。
后期会按框架需求模块一个个整理出来,最后讲清楚整个框架。框架参考文档:https://www.imooc.com/article/details/id/71219
复制代码

安装

1、安装pytest

pip install pytest
复制代码

pycharm安装:选择Pycharm-》Preferences-》选择Project:你的项目名-》Project Interpreter-》点击+-》输入pytest点击install即可

2、安装allure-pytest

allure-pytest是python的一个第三方库。用于连接pytest和allure,使它们可以配合在一起使用。

allure-pytest基于pytest的原始执行结果生成适用于allure的json格式结果。该json格式结果可以用于后续适用allure生成html结果。

pip install allure-pytest
复制代码

注:有些文档是安装pytest-allure-adaptor,会导致报错 !但这个第三方库已经过时了,无法与现有pytest搭配使用。

3、安装allure

==前提:allure依赖jdk环境1.8+==

3.1 下载allure

下载allure最新版本,例如我下载的是:allure-2.13.8.zip ,解压保存至所需目录。

3.2 配置环境变量
  • 终端执行
vim ~/.bash_profile
复制代码
  • 点击insert插入以下环境变量配置后点击esc,输入‘:wq’保存退出
export PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin (此行不添加会报错: sh allure: command not found)

export PATH=${PATH}:/Users/xxx/allure-2.13.8/bin(路径注意填写正确!)
复制代码
  • 生效配置的环境变量(重要!)
source ~/.bash_profile
复制代码

此时在该窗口输入:allure --version 可正确查看allure版本号即配置成功。

  • 然后我遇到一个问题是在新窗口打开后配置的变量就没有生效,需要再手动输入一遍“source ~/.bash_profile”才生效。发现zsh加载的是 ~/.zshrc文件,而 ‘.zshrc’ 文件中并没有定义任务环境变量。解决办法:在~/.zshrc文件最后,增加一行“source ~/.bash_profile”后保存。

运行pytest和allure生产报告

假设所有测试用例函数都放在TestCase文件夹下,run.py生产报告函数如下:

if __name__ == '__main__':
    # 定义测试集 -s:打印print语句结果  -q:简化输出信息 xml_report_path:报告保存的目录,如没有指定则自动在当前目录下生成report文件夹保存目录  指定--alluredir选项
    args = ['-s', '-q', 'TestCase', '--alluredir', xml_report_path]
    pytest.main(args)

    # xml_report_path:报告json文件保存的目录  html_report_path: 生成测试报告的保存目录 --clean:先情况测试报告目录再生成新的
    os.system('allure generate %s -o %s --clean' % (xml_report_path, html_report_path))
复制代码
  • 命令pytest --alluredir report 基于pytest捕捉到的测试用例,每个用例的执行结果会生成一个json文件。

使用allure generate生成美观报告

基于生成的结果文件使用allure generate命令即可生成最终美观的测试报告。但由于allure没有提供pytest一样的main方法,所以需要借助cmd命令。 而python调用shell命令有2个方法。

  • 方法一:使用os.sytem(cmd);
  • 方法二:先写cmd命令,再调用标准库执行cmd。

allure使用说明

class TestBasic:

    @allure.feature('Home')
    @allure.severity('blocker')
    @allure.story('Basic')
    def test_basic_01(self, action):
复制代码

#定制报告

  • Feature:标注主要公共模块
  • Story:标注Feature功能模块下的分支功能
  • Severity:标注测试用例的重要级别
  • Step:标注测试用例的重要步骤
  • Issue:标注Issue case

#级别

  • Blocker级别:中断缺陷(客户端程序无响应,无法执行下一步操作)
  • Critical级别:临界缺陷(功能点缺失)
  • Normal级别:普通缺陷(数值计算错误)
  • Minor级别:次要缺陷(界面错误与UI需求不符)
  • Trivial级别:轻微缺陷(必输项无提示,或者提示不规范)

#增加附件

file = open('../test.png', 'rb').read()
allure.attach('test_img', file, allure.attach_type.PNG)
在报告中增加附件:allure.attach('arg1', 'arg2', 'arg3')
复制代码
  • arg1:是在报告中显示的附件名称
  • arg2:表示添加附件的内容
  • arg3:表示添加的类型(支持:HTML,JPG,PNG,JSON,OTHER,TEXTXML)

pycharm使用os调用shell命令出现报错解决

但我使用os调用shell命令时出现了sh: allure: command not found的报错。 这是由于我的pycharm没有经由terminal,而是从快捷方式或者其他的方法打开,这种打开方法,pycharm不会去读取bashrc中的环境变量,当然也就找不到某些不在系统底层环境中的命令了. 这一点我们可以通如下方法验证:terminal中执行

echo $PATH
复制代码

在pycharm写的脚本中运行:

import os
os.system('echo $PATH')
复制代码

可以看到获取的结果是不同的。 解决方法就是从终端启动pycharm。

查看快捷打开pycharm的方法,点击pycharm-》Tool-》Create Command-line Launcher即可查看。默认均为:/usr/local/bin/charm。在终端中输入:/usr/local/bin/charm即可打开pycharm,此时再运行就没有报错了。

文章分类
代码人生
文章标签