pytest框架的基本功能使用(二)

参数化

在测试用例前加上
@pytest.mark.parametrize(“参数名”,列表数据)
参数名,用来接收每一项数据,并作为测试用例的参数.
列表数据,一组测试数据.

例子:
示例一:

incorrect_datas = [
    {
     "user": "xiaotiancai", "passwd": "", "check": "请输入密码"},
    {
     "user": "", "passwd": "888888", "check": "请输入用户名"},
    {
     "user": "123456789", "passwd": "88888888", "check": "用户不存在"}
]


@pytest.mark.parametrize("data", incorrect_datas)
def test_login_no_password(data):  
    print(data['user'], data['passwd'], data['check'])

示例二:

@pytest.mark.parametrize("a,b,c", [(1,2,3),(20,30,50),(11.22,22.33,33.55)])
def test_add(a,b,c):  # 这个方法传入的参数,一定要与上面完全一致
	res = a + b
	assert res == c

示例三:
组合参数化,依次组合:用例有4个, 0、2,0、3,1、2,1、3(笛卡尔积)

@pytest.mark.parametrize("x", [0,1])
@pytest.mark.parametrize("y", [2,3])
def test_foo(x, y):
    res = x + y
    print res

重运行机制

pytest提供了失败重试机制,需要安装插件rerunfailures:

pip install pytest-rerunfailures

在运行时,可以使用方式为命令行参数形式: pytest --reruns 重试次数
比如:

pytest --reruns  2 

表示运行失败的用例可以重新运行2次。
命令:pytest --reruns 重试次数 --reruns-delay 次数之间的延时设置
比如:

pytest --reruns  2 --reruns-delay 10 

表示运行失败的用例可以重新运行两次,第一次和第二次的间隔时间为10秒钟。

也可以使用main函数形式运行:

import pytest


if __name__ == '__main__':
    pytest.main(["test.py", "--reruns", "2", "--reruns-delay", "3"])  # 和命令行运行的形式一样

表示运行test.py文件,运行失败的用例可以重新运行两次,第一次和第二次的间隔时间为3秒钟。

html报告

pytest可以生成多种样式的结果:

  • 生成JunitXML格式的测试报告,生成这个,其目的就是为了与外部集成,比如Jenkins,命令:
--junitxml=path
  • 生成result log格式的测试报告,一般不用,没有太大的价值,命令:
--resultlog=report\log.txt
  • 生成html格式的报告,这个是比较美观、舒服的,也是用的比较多的,需要安装pytest-html插件。
pip install pytest-html

命令:

 --html=report\test_one_fun.html(相对路径)

生成html时,一定要注意是相对路径,不要是绝对路径!!!

import pytest

if __name__ == '__main__':
    pytest.main(["test.py", "--reruns", "2", "--reruns-delay", "3", "--html=Outputs/reports/test_report.html"])

上面代码生成的报告:
pytest框架的基本功能使用(二)_第1张图片

Allure Framework

Allure Framework是一款开源的,专门用来展示测试结果的工具,可以与pytest进行集成,生成直观、清晰的测试报告。

  • Allure安装(windows平台)
    先去github或者官网下载,目前是2.15版本:
    https://github.com/allure-framework/allure2/releases
    https://repo.maven.apache.org/maven2/io/qameta/allure/allure-commandline/
    pytest框架的基本功能使用(二)_第2张图片
    pytest框架的基本功能使用(二)_第3张图片

下载之后解压,注意不要解压到C盘:
pytest框架的基本功能使用(二)_第4张图片
解压完成后,进入allure的bin目录下:
pytest框架的基本功能使用(二)_第5张图片
配置环境变量:
新建系统变量
pytest框架的基本功能使用(二)_第6张图片
添加path路径:
pytest框架的基本功能使用(二)_第7张图片
在命令行中运行allure --version,查看版本:
在这里插入图片描述

  • allure与pytest的集成,能够使pytest运行完成c测试用例之后,生成allure的文件
    两者的集成,需要安装pytest的allure支撑插件allure-pytest:
pip install allure-pytest

支撑插件安装完成之后,就可以在pytest命令中使用了,下面是官方文档的步骤(注意路径是相对路径):
pytest框架的基本功能使用(二)_第8张图片

运行示例:

import pytest


if __name__ == '__main__':
    pytest.main(["test.py", "--reruns", "2", "--reruns-delay", "3", "--html=Outputs/reports/test1_report.html", "--alluredir=Outputs/allure"])


运行之后,生成了allure的相应文件:
pytest框架的基本功能使用(二)_第9张图片
然后在cmd命令中运行,注意在allure路径下运行,否则会找不到:

allure serve /Outputs/allure

pytest框架的基本功能使用(二)_第10张图片

报告:
pytest框架的基本功能使用(二)_第11张图片

你可能感兴趣的:(自动化,python,参数化,pytest,allure)