1、在实际的测试工做中,一般须要对多组不一样的输入数据,进行一样的测试操做步骤,以验证咱们的软件。这种测试在功能测试中javascript
很是耗费人力物力,可是在自动化中,却比较好实现,只要实现了测试操做步骤,而后将多组测试数据以数据驱动的形式注入,就能够实现了,php
前面学习了参数化,当数据量很是大的时候,咱们能够将数据存放到外部文件中,使用的时候将文件中的数据读取出来,方便测试数据的管理,html
数据与测试用例分别管理,能够利用外部数据源YAML、json、Excel 、CSV管理测试数据java
pytest结合yamlpython
yaml是一个可读性高,用来表达数据序列化的格式。pyyaml模块在python中用于处理yaml格式数据,主要使用yaml.safe_dump() 和 yaml.safe_load()函数将python值web
和yaml格式数据相互转换。工做中经常使用yaml格式的文件存储测试数据json
安装ruby
pip install PyYAMLsession
实例:框架
建立用例文件以及数据文件来完成数据驱动的测试案例,建立一个文件夹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值,分别传到用例中生成多条用例分别执行
2、结合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/