IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发测试 -> pytest框架的基本功能使用(二) -> 正文阅读

[开发测试]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

在这里插入图片描述

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

  开发测试 最新文章
pytest系列——allure之生成测试报告(Wind
某大厂软件测试岗一面笔试题+二面问答题面试
iperf 学习笔记
关于Python中使用selenium八大定位方法
【软件测试】为什么提升不了?8年测试总结再
软件测试复习
PHP笔记-Smarty模板引擎的使用
C++Test使用入门
【Java】单元测试
Net core 3.x 获取客户端地址
上一篇文章      下一篇文章      查看所有文章
加:2021-10-26 12:29:20  更:2021-10-26 12:29:28 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/18 2:28:08-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码