最近下载了一个开源的接口自动化测试框架(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,此时再运行就没有报错了。