pytest:数据驱动;结合allure生成测试报告
一、在实际的测试工作中,通常需要对多组不同的输入数据,进行同样的测试操作步骤,以验证我们的软件。这种测试在功能测试中
非常耗费人力物力,但是在自动化中,却比较好实现,只要实现了测试操作步骤,然后将多组测试数据以数据驱动的形式注入,就可以实现了,
前面学习了参数化,当数据量非常大的时候,我们可以将数据存放到外部文件中,使用的时候将文件中的数据读取出来,方便测试数据的管理,
数据与测试用例分别管理,可以利用外部数据源YAML、json、Excel 、CSV管理测试数据
pytest结合yaml
yaml是一个可读性高,用来表达数据序列化的格式。pyyaml模块在python中用于处理yaml格式数据,主要使用yaml.safe_dump() 和 yaml.safe_load()函数将python值
和yaml格式数据相互转换。工作中常常使用yaml格式的文件存储测试数据
安装
pip install PyYAML
实例:
创建用例文件以及数据文件来完成数据驱动的测试案例,创建一个文件夹testdata,在这个文件夹下创建data.yml 和test_yaml.py文件
创建data.yml文件:
创建test_yaml.py文件:
#!/usr/bin/env python # _*_coding: utf-8 _*_ import pytest import yaml @pytest.mark.parametrize("a, b", yaml.safe_load(open("data.yml", encoding='utf-8'))) def test_foo(a, b): print(f"a + b = {a + b}")
运行结果:
Testing started at 19:49 ... C:\Python\python.exe "C:\Program Files\JetBrains\PyCharm Community Edition 2019.1\helpers\pycharm\_jb_pytest_runner.py" --target test_yaml.py::test_foo Launching pytest with arguments test_yaml.py::test_foo in C:\Users\wanwen\PycharmProjects\vigo\xuexi\testdata ============================= test session starts ============================= platform win32 -- Python 3.8.0, pytest-5.4.3, py-1.9.0, pluggy-0.13.1 rootdir: C:\Users\wanwen\PycharmProjects\vigo\xuexi\testdata plugins: html-2.1.1, metadata-1.11.0, ordering-0.6collected 2 items test_yaml.py [100%] ============================== 2 passed in 0.69s ============================== Process finished with exit code 0 .a + b = 3 .a + b = 50
代码分析:yaml文件里定义了列表数据,通过open()方法获取data.yml文件对象,使用yaml.safe_load()加载这个文件对象,将yaml格式文件转换为python值,分别传到用例中生成多条用例分别执行
二、结合allure生成测试报告
测试报告在项目中是一个至关重要的角色,报告可以体现测试人员的工作量,开发人员可以从测试报告中了解缺陷的情况,测试经理可以从测试报告中看到测试人员的执行情况及测试用例的覆盖率,项目负责人可以通过测试报告查看整个项目还余留多少问题,此次版本是否测试通过,一个美观,一目了然的测试报告能够非常清晰的反应一些问题,提供给相关人员了解项目的整体状态。allure框架是一种灵活的轻量级支持多种语言的测试报告工具,它不仅能够以简洁的web报告形式显示已测试的内容,而且允许参与开发过程的每个人从测试的日常执行中提取最大限度的有用信息。同时支持多种语言包括JAVA Python javascript groovy ruby php .net scala
安装
pip install allure-pytest
查看allure版本
allure --version
运行
第一步:在pytest执行测试的时候,指定参数-alluredir选项及结果数据保存的目录,代码如下:
pytest --alluredir=tmp/my_allure_results
tmp/my_allure_results中保存了本次测试的结果数据
第二步:打开报告,需要启动allure服务,在terminal中输入allure server
【path/to/allure_results】,代码如下
allure server path/to/allure_results
也可以使用allure generate生成HTML格式的测试结果报告,并使用allure open来打开报告
allure generate ./result/ -o ./report/ --clean
上面的命令将./result/目录下的测试数据生成HTML测试报告到./report路径下,--clean选项目的是先清空测试报告目录,再将生成新的测试报告,然后使用下面的命令打开报告
allure open -h 127.0.0.1 -p 8883 ./report/