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"])

上面代码生成的报告:
在这里插入图片描述

Allure Framework

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

下载之后解压,注意不要解压到C盘:
在这里插入图片描述
解压完成后,进入allure的bin目录下:
在这里插入图片描述
配置环境变量:
新建系统变量
在这里插入图片描述
添加path路径:
在这里插入图片描述
在命令行中运行allure --version,查看版本:
在这里插入图片描述

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

支撑插件安装完成之后,就可以在pytest命令中使用了,下面是官方文档的步骤(注意路径是相对路径):
在这里插入图片描述

运行示例:

import pytest


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


运行之后,生成了allure的相应文件:
在这里插入图片描述
然后在cmd命令中运行,注意在allure路径下运行,否则会找不到:

allure serve /Outputs/allure

在这里插入图片描述

报告:
在这里插入图片描述

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值