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简介
1.pytest是个python的单元框架,是第三方库
2.pytest可以和selenium,requests,appium结合实现接口自动化,web自动化,app自动化。
3.pytest可以实现测试用例的跳过以及reruns失败用例重试。
4.pytest可以和allure生成非常美观的测试报告。
5.pytest可以和Jenkins持续集成。
6.pytest有很多非常强大的插件,并且这些插件能够实现很多的实用的操作。例如:

pytest-html(生成html格式的自动化测试报告)
pytest-xdist(测试用例分布式执行,多CPU分发)
pytest-ordering(用于改变测试用例的执行顺序)
pytest-rerunfailures (用例失败后重跑)
allure-pytest (用于生成美观的测试报告)

安装方法:pip install pytest

二、Pytest的默认的使用规则
1.模块名必须以test_ 开头或以 _test结尾
2.测试类名必须以Test开头,并且不能有init方法。
3.测试方法名必须以test开头

三、Pytest与Unittest之间的区别
在这里插入图片描述

四、Pytest测试用例的运行方式
1.主函数模式
(1)运行所有:pytest.main()

(2)运行指定模块:pytest.main(['-vs','test_login.py'])

(3)运行指定文件夹:pytest.main(['-vs','./interface_testcase'])

(4)通过nodeid指定用例执行:nodeid由 ./文件名/模块名::类名::方法名/函数名 组成。

#运行test_04func函数
pytest.main(['-vs','./interface_testcase/test_interface.py::test_04func'])
#运行test_03_zhiliao方法
pytest.main(['-vs','./interface_testcase/test_interface.py::TestInterface::test_03_zhiliao'])

注释:#interface为文件夹名
#test_interface.py为模块名
#TestInterface为类名
#test_04_func与test_03_zhiliao为方法或函数

参数详解:
-s:表示输出调试信息,包括print打印的信息

-v: 显示更详细的信息(如:所在文件的目录,测试是否通过等)

-vs: 合并显示

-n:支持多线程或者分布式运行测试用例。
如:pytest -vs ./testcase/test_login.py -n 2(表示分两个线程运行)

–reruns: --reruns=2(失败用例重跑2次)

-x: (表示只要有一个用例报错,那么测试停止)

–maxfail=2:(出现两个用例失败就停止测试)

-k:(根据测试用例的部分字符串指定测试用例)
如:pytest.main(['-vs','./test_01.py::TestAA','-k=aa'])执行包含有aa的测试用例

2.通过读取pytest.ini配置文件运行
(1)位置:一般放在项目的根目录
(2)编码:必须是ANSI,可以使用notpad++修改编码格式
(3)作用:改变pytest默认的行为
(4)运行的规则:不管是主函数模式运行,还是命令行模式运行,都会去读取这个配置文件

pytest.ini配置文件内容如下:

[pytest]
#命令行参数,有多个参数时用空格分隔
addopts=-vs  -reruns

#测试用例文件夹(可自己配置)
testpaths=../pytestproject

#配置测试搜索的模块文件名称(test开头,可修改)
python_files=test*.py

#配置测试搜索的测试类名(Test开头,可修改)
python_classes=Test*

#配置测试搜索的测试函数名(test开头,可修改)
python_functions=test

#管理标记,标记名称可自行设定
markers=
	smoke:冒烟用例
	usermanage:用户管理模块
	productmanage:商品管理模块

五、用例的执行顺序
Unittest:是按Ascll的大小来执行
Pytest:默认从上到下按顺序执行

修改Pytest的执行顺序方法:
在先执行的方法前输入
@pytest.mark.run(order=1) (按order的值从1…n的顺序执行)

六、分组执行(冒烟,分模块执行,分接口和web执行)
1.只执行冒烟用例时
用例代码:

class TestAA:
    @pytest.mark.smoke #冒烟
    def testaa(self):
        time_loc=time.strftime('%H-%M-%S',time.localtime())
        time.sleep(2)
        print(time_loc+'您好bb啊')

pytest.ini配置文件:

[pytest]
#命令行参数,有多个参数时用空格分隔
addopts=-vs -m=smoke

#测试用例文件夹(可自己配置)
testpaths=./   #(./表示根目录下的所有文件)
.....
.....

#管理标记,标记名称可自行设定
markers=
	smoke:冒烟用例

运行代码:pytest -m ' smoke '

2.执行多个不同标记的用例时
例如:既执行smoke用例又执行usermanage用例
pytest.ini配置文件:

[pytest]
#命令行参数,有多个参数时用空格分隔
addopts=-vs 

#测试用例文件夹(可自己配置)
testpaths=./   #(./表示根目录下的所有文件)
.....
.....

#管理标记,标记名称可自行设定
markers=
	smoke:冒烟用例
	usermanage:用户管理模块

运行代码:pytest -m 'smoke or usermanage'

七、跳过测试用例
1.无条件跳过

@pytest.mark.skip(reason='太帅了')

2.有条件跳过

#如果age的值大于等于18时,跳过执行
@pytest.mark.skipif(age>=18,reason='已成年')
  开发测试 最新文章
pytest系列——allure之生成测试报告(Wind
某大厂软件测试岗一面笔试题+二面问答题面试
iperf 学习笔记
关于Python中使用selenium八大定位方法
【软件测试】为什么提升不了?8年测试总结再
软件测试复习
PHP笔记-Smarty模板引擎的使用
C++Test使用入门
【Java】单元测试
Net core 3.x 获取客户端地址
上一篇文章      下一篇文章      查看所有文章
加:2021-07-10 11:39:36  更:2021-07-10 11:40:06 
 
开发: 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年5日历 -2024/5/3 18:08:55-

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