pytest运行时参数说明,pytest详解,pytest.ini详解
一、Pytest简介
1.pytest是一个非常成熟的全功能的Python测试框架,主要有一下几个特点:
简单灵活,容易上手,支持参数化
2.能够支持简单的单元测试和复杂的功能测试,还可以用来做selenium、appium等自动化测试,requests+pytest接口自动化测试
3.pytest具有很多第三方插件,并且可以自定义扩展,比较好用的如:
pytest-selenium(集成selenium)
pytest-html(完美html测试报告生成)
pytest-rerunfailures(失败用例重复执行)
pytest-xdist(多CPU分发)
4.测试用例的skip和xfail处理
5.可以很好的和jenkins集成
6.pytest也支持allure测试报告
7.能兼容unittest,是unittest的扩展
二、Pytest以及常用插件安装
把如下内容写到一个txt文件中,如require-install.txt
pytest
pytest-html
pytest-xdist
pytest-rerunfailures
然后在Dos窗口中使用此命令安装所有的模块:pip install -r require-install.txt
通过命令:pytest --version验证安装结果。如果报如下错误则需要调整python或pytest的版本,这是python和pytest的版本不兼容:
下面说两个错误例子,一个是win7、python3.7.4以及pytest5.0+,将python降到3.7.3就ok了,另一个是Windows 10, python 3.8.1, pytest 5.3.3,将pytest降到4.6.9以下版本也ok,因此建议你要么降python版本,要么降pytest版本试试。
笔者使用的是:win7+python3.7.3+pytest5.4.1,亲测没问题。
三、 pytest框架基础应用
- pytest运行函数时和运行类里面的方法情况如下:
importpytestdeftest01():print('测试用例一')defabcd():print('测试用例二')classTestCase:deftest_03(self):print('测试用例三')defdefg(self):print('测试用例四')if__name__=='__main__':pytest.main(['-s','pytest-demo.py'])
运行结果如下:
注意事项:
(1) 测试函数、类中的测试方法都必须以test_ 开头,当然以什么开头在pytest可自定义。
(2) 测试类必须以Test开头,并且不能带有init方法
(3) 断言必须使用assert断言
执行方式:
(1) 主函数方式运行:
指定运行文件:pytest.main([’-s’,‘pytest-demo.py模块名’])
注意:如果py文件是以test_开头或者以_test结尾则可以使用pytest.main()运行。因为pytest.main()会运行当前目录下所有以test_开头或者以_test结尾的文件。
(2) 命令行方式运行
点开Pycharm左下角的:Terminal打开当面目录下的命令行窗口。
输入命令执行:pytest pytest-demo.py模块名
注意:如果py文件是以test_开头或者以_test结尾则可以使用pytest命令运行,因为pytest会运行当前目录下所有以test_开头或者以_test结尾的文件。
四、 运行时参数说明
-s:显示打印内容
如:pytest pytest-demo.py -s
等价于:pytest.main([’-s’,‘pytest-demo.py’])
:::指定测试用例运行
运行函数:如:pytest pytest-demo.py::test_01
等价于:pytest.main([’-s’,‘pytest-demo.py::test01’])
运行类中方法:如:pytest pytest-demp.py::TestCase::test_03
等价于:pytest.main([’-s’, ‘pytest-demo.py::TestCase::test_03’])
–html=路径/report.html:生成xml/html格式测试报告(需要先安装pytest-html)
如:pytest pytest-demp.py --html-./report.html
等价于:pytest.main([’-s’,‘pytest-demo.py’,’–html=./report.html’])
–maxfail=1:出现1个失败就终止测试
如:pytest pytest-demo.py --maxfail=1
等价于:pytest.main([’-s’,‘pytest-demo.py’,’–maxfail=1’])
-n:pytest-xdist多线程运行(需要先安装pytest-xdist)
如:pytest pytest-demo.py -n 2
等价于:pytest.main([’-s’,‘pytest-demo.py’,’-n=2’])
在用例中使用time.sleep(2)加等待时间测试,发现多线程时间减少了。
–reruns NUM:重试运行测试用例(需要先安装pytest-rerunfailures)
如:pytest pytest-demo.py --reruns 2
则一旦有用例失败,则会重复执行两次,貌似这种不能用main运行。
由此能看出:pytest.main([’-s’,‘pytest-demo.py模块名’]),main方法中是传入的一个list格式,list中可以传入多个参数。
五、pytest的ini配置文件
pytest.ini文件是pytest的主配置文件,可以改变pytest的默认行为。
1.pytest.ini的放置位置:一般放在项目工程的根目录(即当前项目的顶级文件夹下)
2.pytest.ini的作用:指定pytest的运行方式(在cmd输入pytest后,会读取pytest.ini中的配置信息,按指定的方式去运行)
3.cmd下使用 pytest -h 命令查看pytest.ini的设置选项(以下截图只是部分选项)
常用设置选项如下:
[pytest]
addopts = -s … #可添加多个命令行参数,用空格分隔
testpaths = …/pytestproject #测试用例文件夹,可自己配置,…/pytestproject为上一层的pytestproject文件夹。
python_files = test*.py #配置测试搜索的模块文件名称
python_classes = Test* #配置测试搜索的测试类名
python_funtions = test #配置测试搜索的测试函数名
示例如下:
[pytest]
addopts = -s --html=./report.html
testpaths = …/pytestproject
python_files = test*.py
python_classes = Test*
python_funtions = test*
注意:
1.运行的时候自动读取配置文件,运行pytestproject下的所有test开头的模块文件。
这可能是B站最详细的pytest自动化测试框架教程,整整100小时,全程实战!!!
相关文章:

pytest运行时参数说明,pytest详解,pytest.ini详解
一、Pytest简介 1.pytest是一个非常成熟的全功能的Python测试框架,主要有一下几个特点: 简单灵活,容易上手,支持参数化 2.能够支持简单的单元测试和复杂的功能测试,还可以用来做selenium、appium等自动化测试…...

Matplotlib绘图知识小结--Python数据分析学习
一、Pyplot子库绘制2D图表 1、Matplotlib Pyplot Pyplot 是 Matplotlib 的子库,提供了和 MATLAB 类似的绘图 API。 Pyplot 是常用的绘图模块,能很方便让用户绘制 2D 图表。 Pyplot 包含一系列绘图函数的相关函数,每个函数会对当前的图像进行…...

mouseover、mouseout和mouseenter、mouseleave之间的区别(配对使用)
以上四个事件都是与鼠标相关的事件,其中mouseenter和mouseover均是鼠标移入时触发的事件,但是使用mouseover的时候会触发冒泡事件,也就是,当父元素和子元素均绑定mouseover事件的时候,如果触发子元素的mouserover事件&…...

【论文阅读】基于深度学习的时序预测——Autoformer
系列文章链接 论文一:2020 Informer:长时序数据预测 论文二:2021 Autoformer:长序列数据预测 论文三:2022 FEDformer:长序列数据预测 论文四:2022 Non-Stationary Transformers:非平…...

【AI】《动手学-深度学习-PyTorch版》笔记(十五):网络中的层、块和参数
AI学习目录汇总 1、什么是块? 在线性模型中,我们关注过单个神经元(单个神经网络的输入和输出); 在多层感知机中,我们关注过整层的神经元(前一层的输出作为后一层的输入); 如果将“多层感知机”视为一整体,称为“块”,可以将前一个块的输出作为后一个块的输入。 块…...

Flink之Task解析
Flink之Task解析 对Flink的Task进行解析前,我们首先要清楚几个角色TaskManager、Slot、Task、Subtask、TaskChain分别是什么 角色注释TaskManager在Flink中TaskManager就是一个管理task的进程,每个节点只有一个TaskManagerSlotSlot就是TaskManager中的槽位,一个TaskManager中可…...

计算机竞赛 python 爬虫与协同过滤的新闻推荐系统
1 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 python 爬虫与协同过滤的新闻推荐系统 🥇学长这里给一个题目综合评分(每项满分5分) 难度系数:3分工作量:3分创新点:4分 该项目较为新颖&…...

如何使用Kali Linux进行密码破解?
今天我们探讨Kali Linux的应用,重点是如何使用它来进行密码破解。密码破解是渗透测试中常见的任务,Kali Linux为我们提供了强大的工具来帮助完成这项任务。 1. 密码破解简介 密码破解是一种渗透测试活动,旨在通过不同的方法和工具来破解密码…...

【Freertos基础教程】任务管理之基本使用
文章目录 前言一、freertos任务管理是什么?二、任务管理涉及到的一些概念1.任务状态2.优先级3.栈(Stack)4.事件驱动5.协助式调度(Co-operative Scheduling) 二、任务的基本操作1.创建任务什么是任务 2.创建任务3.任务的删除4.任务的调度3.简单示例 总结 前言 本fre…...

VMware安装BC-linux-eluer 21.10,配置网络
参考配置:https://hiworld.blog.csdn.net/article/details/121608950 /etc/sysconfig/network-scripts/ifcfg-ens33 配置内容如下: TYPEEthernet PROXY_METHODnone BROWSER_ONLYno BOOTPROTOstatic DEFROUTEyes IPV4_FAILURE_FATALno IPV6INITyes IPV6_…...

2023最新Windows编译ffmpeg详细教程,附msys2详细安装配置教程
安装MSYS2 msys2是一款跨平台编译套件,它模拟linux编译环境,支持整合mingw32和mingw64,能很方便的在windows上对一些开源的linux工程进行编译运行。 类似的跨平台编译套件有:msys,cygwin,mingw 优势&…...

【SpringBoot】87、SpringBoot中集成Redisson实现Redis分布式锁
1、Redisson 介绍 Redisson 是架设在 Redis 基础上的一个 Java 驻内存数据网格(In-Memory Data Grid)。Redisson 在基于 NIO 的 Netty 框架上,充分的利用了 Redis 键值数据库提供的一系列优势,在 Java 实用工具包中常用接口的基础上,为使用者提供了一系列具有分布式特性的…...

宝藏级画图工具-drawio
今天推荐一款非常好用的免费开源画图工具drawio. Drawio即可以下载安装到本地,也可以在线编辑,在线编辑网址为 https://app.diagrams.net/。 本地版下载地址为https://github.com/jgraph/drawio-desktop/releases 1、支持各类图形 Drawio可以非常便捷…...

36_windows环境debug Nginx 源码-使用 VSCode 和WSL
文章目录 配置 WSL编译 NginxVSCode 安装插件launch.json配置 WSL sudo apt-get -y install gcc cmake sudo apt-get -y install pcre sudo apt-get -y install libpcre3 libpcre3-dev sudo apt-get...

海康威视iVMS综合安防系统任意文件上传(0Day)
漏洞描述 攻击者通过请求/svm/api/external/report接口任意上传文件,导致获取服务器webshell权限,同时可远程进行恶意代码执行。 免责声明 技术文章仅供参考,任何个人和组织使用网络应当遵守宪法法律,遵守公共秩序,尊重社会公德,不得利用网络从事危害国家安全、荣誉和…...

SOME/IP通信对数据包的大小有要求
SOME/IP通信对数据包的大小有要求,因为SOME/IP是基于UDP协议的,而UDP协议有一个最大传输单元(MTU)的限制,即每个数据包的大小不能超过MTU的值。 不同的网络环境下,MTU的值可能不同,一般在1500字节到9000字节之间。 如果SOME/IP数据包的大小超过了MTU的值,那么就需要进…...

苹果电脑会自动清理垃圾吗 苹果电脑系统垃圾怎么清除
苹果电脑是很多人喜欢使用的一种电脑,它有着优美的外观,流畅的操作系统,丰富的应用程序和高效的性能。但是,随着时间的推移,苹果电脑也会产生一些不必要的文件和数据,这些文件和数据就是我们常说的垃圾。那…...

【0216】stats collector(统计信息收集器)资源初始化之获取IPV4套接字地址信息(2)
相关阅读: 【0215】stats collector(统计信息收集器)工作原理之资源初始化(1) 1. 如何获取ipv4套接字地址信息 在【0215】stats collector(统计信息收集器)工作原理之资源初始化(1)一文的2.1.3节中讲解了stats collector进程会创建UDP,与其他进程进行通信,从而实现…...

uni-app 面容、指纹识别插件(uni-face-login)
面容、指纹识别插件(uni-face-login) 介绍 人脸指纹登录授权,可以使用手机自带的人脸、指纹进行生物识别,进而判断是否机主本人,从而进行授权验证,适配安卓、iOS、鸿蒙设备 猛戳这里去插件市场看看 使用 该插件支持鸿蒙、安卓…...

专治疗懒病:GO、KEGG富集分析一体函数
之前我们写过GO、KEGG的富集分析,参见:补充更新:GO、KEGG(批量分组)分析及可视化。演示了差异基因KEGG或者GO的分析流程。其实差异基因的富集分析输入的文件只需要一组基因就可以了。所以我们发挥了专治懒病的优良传统…...

pygame第6课——贪吃蛇小游戏
今天我们开始Pygame的第六课,前几节课的内容在这里【点我】,欢迎大家前去考古: 今天我们一起来学习制作一个小游戏【贪吃蛇】,这是一个非常经典的小游戏,那么我们一起开始吧 1、游戏准备工作 import pygame, random,o…...

iptables之iptables表、链、规则 、匹配模式、扩展模块、连接追踪模块(一)
一、iptables的链 1.请求到达本机: PREROUTING --> INPUT --> Local Process (本机) 2.请求经过本机: PREROUTING --> FORWARD --> POSTROUTING 3.请求从本机发出:local Process(本机…...

Mac 卸载appium
安装了最新版的appium 2.0.1,使用中各种问题,卡顿....,最终决定回退的。记录下卸载的过程 1.打开终端应用程序 2.卸载全局安装的 Appium 运行以下命令以卸载全局安装的 Appium: npm uninstall -g appium 出现报错:Error: EACCES: permiss…...

数据结构----哈夫曼树
这里写目录标题 基本概念引子基本概念各种路径长度各种带权路径长度结点的带权路径长度树的带权路径长度哈夫曼树 哈夫曼树的构造理论基础构造思想总结 哈夫曼树的实现哈夫曼编码前缀编码哈夫曼编码的思想案例代码实现 编码与解码 基本概念 引子 哈夫曼树就是寻找构造最优二叉…...

Spring之Aop切面---日志收集(环绕处理、前置处理方式)--使用/教程/实例
Spring之Aop切面---日志收集(环绕处理、前置处理方式)--使用/教程/实例 简介系统登录日志类LoginLogEntity .java 一、环绕处理方式1、自定义注解类LoginLogAop.class2、切面处理类LogoutLogAspect.java 二、前置处理方式:1、自定义注解类Log…...

UE4/UE5 照明构建失败 “Lightmass crashed”解决“数组索引越界”
在构建全局光照时,经常会出现“Lightmass crashed”的错误,导致光照构建失败。本文将分析这一问题的原因,并给出解决建议。 UE4 版本4.26 报错如下: <None> Lightmass crashed: Assertion failed: (Index > 0) & (Index < ArrayNum) [File:d:\bu…...

并发编程系列-Semaphore
Semaphore,如今通常被翻译为"信号量",过去也曾被翻译为"信号灯",因为类似于现实生活中的红绿灯,车辆是否能通行取决于是否是绿灯。同样,在编程世界中,线程是否能执行取决于信号量是否允…...

3年 Android 开发的面试心经(后悔当初没有拿 N+1)
作者:勇闯天涯 当某人顺利通过大厂面试时,总会有人认为这是运气比较好罢了,但他们不曾得知对方之前受过多少苦和委屈,又付出了多少努力一步步去突破这些困境。正是因为他们的努力付出,在合适的时间与地点,用…...

【c语言】 -- 指针进阶
📕博主介绍:目前大一正在学习c语言,数据结构,计算机网络。 c语言学习,是为了更好的学习其他的编程语言,C语言是母体语言,是人机交互接近底层的桥梁。 本章来学习指针进阶。 让我们开启c语言学习…...

软件压力测试对软件产品起到什么作用?
一、软件压力测试是什么? 软件压力测试是一种通过模拟正常使用环境中可能出现的大量用户和大数据量的情况,来评估软件系统在压力下的稳定性和性能表现的测试方法。在软件开发过程中,经常会遇到一些性能瓶颈和稳定性问题,而软件压力测试的作…...