Pytest系列-快速入门和基础讲解(1)

2023-11-10

前言

  • 目前有两种纯测试的测试框架,pytestunittest
  • unittest应该是广为人知,而且也是老框架了,很多人都用来做自动化,无论是UI还是接口
  • pytest是基于unittest开发的另一款更高级更好用的单元测试框架

单元测试框架介绍

  • 单元测试框架是在自动化测试或者白盒测试中对软件的最小单元(函数、方法)进行测试的框架
  • 单元测试框架的分类:python(unitest、pytest)、Java(Testing(主流)、Junit)
  • 单元测还框架主要做什么
    • 发现测试用例
    • 执行测试用例
    • 判断测试结果
    • 生成测试报告

为什么要用Pytest

pytest 的官方网站介绍,它具有如下特点:
1、非常容易上手,入门简单,文档丰富,文档中有很多实例可以参考
2、能够支持简单的单元测试和复杂的功能测试
3、支持参数化
4、执行测试过程中可以将某些测试跳过(skip),或者对某些预期失败的case标记成失败
5、支持重复执行(rerun)失败的 case
6、支持运行由 nose, unittest 编写的测试 case
7、可生成 html 报告
8、方便的和持续集成工具 jenkins 集成
9、可支持执行部分用例
10、具有很多第三方插件,并且可以自定义扩展

Pytest安装、简介以及常用插件安装

Pytest安装

cmd运行

pip install -U pytest

pip3 install pytest -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com

pycharm 直接安装
在这里插入图片描述

查看版本

pytest --version

Pytest简介及常用插件安装

pytest官方文档 : https://docs.pytest.org/en/latest/contents.html

在这里插入图片描述
步骤:打开Pycharm,在项目根路径下面 创建一个.txt的文件夹,将要安装的插件放进去 (注:使用此方法是在虚拟环境安装 DOS环境会安装不成功
在这里插入图片描述
打开控制台 输入安装语句 进行安装:
在这里插入图片描述
上面方法可能安装不成功,直接在terminal 单个安装也可以
在这里插入图片描述

Pytest 默认测试用例的规则以及基础应用

Pytest 用例设计的规则

用Pytest写用例时候,一定要按照下面的规则去写,否则不符合规则的测试用例是不会执行的
1、文件名必须以test_.py 文件开头和test.py结尾
2、以 test
开头的函数
3、以 test 开头的类,且不能包含 _ _ init_ _ 方法
4、以 test_ 开头的类里面的方法
5、所有的包 package 必须要有__init__.py 文件

Pytest执行基础应用

    **执行:Alt+Enter自动导报**

1、通过命令行执行方式执行,再terminal 和 cmd 中 直接执行。

pytest  			执行某个目录下所有的用例
pytest 脚本名称.py	执行某一个 py 文件下用例

执行参数:
(1)运行start.py 模块里面的某个函数,或者某个类,某个类里面的方法
-v 和不加 -v 都可以,加 -v 的话,打印的信息更详细

pytest -v 08_mark.py::TestClass::test_method

pytest 08_mark.py::TestClass::test_method

pytest test.py::test_answer

(2)运行start.py 模块里面,测试类里面的某个方法

pytest start.py::TestClass::test_two

(3) -m 标记表达式(先了解)

 pytest -m login

将运行用 @pytest.mark.login 装饰器修饰的所有测试
(4)-q 简单打印,只打印测试用例的执行结果

在这里插入代码片
pytest -q test.py

(5)-s 详细打印 (输出调试信息)

 pytest -s test.py

(6)-x 遇到错误时停止测试

 pytest test.py -x

(7)—maxfail=num,当用例错误个数达到指定数量时,停止测试

 pytest test.py --maxfail=1

(8)-k 匹配用例中包含某个字符串的名称
执行测试用例名称包含http的所有用例

pytest -s -k http test.py

(9)-k 根据用例名称排除某些用例

1 pytest -s -k "not http" start.py

(10)-k 同时匹配不同的用例名称

pytest -s -k "method or weibo" start.py

(11)-n=num 多线程运行(插件:pytest-cdist 已安装成功)

pytest  -vs -n=2     两个线程一起执行

(12)–reruns=num 失败重跑, num 是重跑的次数(插件:pytest-rerunfailres 安装成功)
一个进程里面有多个线程

raise Exception()  抛出异常
try except  解决异常

pytest -vs --reruns=2   抛出异常后重新执行两次

(13)–html 生成html报告 (插件:pytest-html 已安装成功)

pytest --vs --html ./reporters/result.html   后面是存放的位置

2、通过主函数main方式执行,直接在代码运行文件最后添加。

if __name__=='__main__';
	pytest.mian()

在项目名称下添加运行文件也可以执行:

if __name__=='__main__';
	pytest.mian(["-vs"])

3、通过配置文件pytest.ini文件执行
注意
① 一般放在项目的根目录下,名称必须是pytest.ini;

② 编码格式为 ANSI;当有中文时可能需要改变编码格式为UTF-8或GB2312 ;

③ pytest.ini文件可以改变默认的测试用例规则;

④ 不管是命令行也好还是说主函数运行也好,都会加载这个配置文件。
举例:

[pytest]        #配置文件
#参数
addopts = -vs -m "smoke" #表示 只执行smoke用例

testpaths = ./testcases  #测试用例的位置

python_files = test_*.py  #python文件名的规则,会执行对应文件的测试用例

python_classes = Test* #python文件类名的规则,对应文件会执行测试用例

python_functions = Test_*  #python文件方法名的规则,对应文件会执行测试用例
------------------------------------------------
#测试用例分组执行。有时候用例多只执行个别模块的可以对测试用例进行分组执行。
#标记
markers =
	smoke:冒烟用例
	denglu:登录
	product_manage:商品管理
	.....
#代码文件中的测试用例上面添加使用
@pytest.mark.smoke

Pycharm运行Pytest

1、首先,要去settings里面设置单元测试框架为Pytest
2、如果是nosetests的话,右键运行是以python脚本运行的
3、如果设置了unittest则是以unittest框架去运行
在这里插入图片描述
在这里插入图片描述

注意

pytest 是可以兼容 unittest 脚本的,写的 unittest 用例也能用 pytest 框架去运行。

Pytest跳过测试用例

无条件跳过

在测试用例上方填写代码

class Testcase@pytest.mark.skip(reason='无理由跳过')
  def test_01(self):
  		print("测试")

有条件跳过

在已有条件不满足的情况下,选择跳过

class Testcase:
  work=1
  @pytest.mark.skipif(work<1,reason="工作少于1年跳过")
  def test_01(self):
  		print("测试")
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Pytest系列-快速入门和基础讲解(1) 的相关文章

随机推荐

  • qTip2 Events

    author YHC 绑定事件 这个API触发一些特殊的事件 以下详细信息 允许你给qTip分配多个时间监听 和为某一事件做出响应 例如 我们绑定一个事件句柄 它将侦听qTip的移动的事件 和更新DIV元素里面显示的qTip的坐标内容 se
  • 【满分】【华为OD机试真题2023 JS】微服务的集成测试

    华为OD机试真题 2023年度机试题库全覆盖 刷题指南点这里 微服务的集成测试 知识点深搜 时间限制 1s 空间限制 256MB 限定语言 不限 题目描述 现在有n个容器服务 服务的启动可能有一定的依赖性 有些服务启动没有依赖 其次服务自身
  • 现在公司都不缺人了?软件测试工作经历3年,居然被坑了?防不胜防!

    我的情况 大概介绍一下个人情况 女 本科 三年多测试工作经验 懂python 会写脚本 会selenium 会性能 然而到今天都没有收到一份offer 从年后就开始准备简历 年后上班的第一天就开始投 开始只是投了一些官网已久的岗位 并没有收
  • Keras中model.evaluate()返回的是 loss value & metrics values

    Keras官方文档 https keras io models model evaluate Keras中model evaluate 返回的是 损失值和你选定的指标值 例如 精度accuracy evaluate evaluate x N
  • Spring事务管理: 构建稳健的数据库事务处理

    博主猫头虎 带您 Go to New World 博客首页 猫头虎的博客 面试题大全专栏 文章图文并茂 生动形象 简单易学 欢迎大家来踩踩 IDEA开发秘籍专栏 学会IDEA常用操作 工作效率翻倍 100天精通Golang 基础入门篇 学会
  • SpringBoot入门到精通(四):整合JDBC和JPA

    整合JDBC JdbcTemplate JPA 当前环境说明 Windows10 64 Maven3 x JDK1 8 MySQL5 6 SpringToolSuite4 Spring官方提供的开发工具 实际就是一个Eclipse 一 整合
  • 必看!!!客户端requests与服务端request收发请求

    当使用代码进行接口访问的时候 请求的发送与请求的接受使用的参数应该怎么如何传输能够请求到正确的响应呢 一 使用GET请求发送 客户端与服务端的参数传输与接受 1 服务端 首先使用web框架写一个简单的接口 接收两个参数 page和size
  • 网络原理TCP/UDP

    文章目录 TCP TCP协议段格式 可靠机制 确认应答机制 超时重传机制 连接管理机制 建立连接 三次握手 断开连接 四次挥手 常见问题 效率机制 滑动窗口 流量控制机制 拥塞控制 延迟应答 捎带应答 粘包问题 应用层的数据包 TCP与UD
  • 源码(二进制)安装kuberbetes(k8s) (完整版-持续完善)

    环境配置 1 分别设置hostname hostnamectl set hostname master hostnamectl set hostname node01 hostnamectl set hostname node02 2 主机
  • 从42亿个不重复的4字节整数中判断一个数是否存在

    include
  • RuoYi项目中VUE表单修改表单中数据回显下拉选项或者单选出现异常

    若依项目中有一个功能就是字典 字典可以让我们不需要修改前端代码的情况下实现表单中下拉选项文字 单选 多选按钮的文字变更 但也会遇到各种各样的问题 后端传递的某个字段的值是数字类型的值 但是字典里面的确实字符串的值 不可能让后端传递字符串的值
  • OpenCV实现SfM(一):双目三维重建(包含SIFT特征点提取)

    三维重建介绍 三维重建是指根据基于一个视图或者多个视图所获得的物体或者场景的图像重建三维模型的过程 由于单视图的信息很单一 因此三维重建需要更复杂的算法和过程 相比之下 多视图的三维重建 模仿人类观察世界的方式 就比较容易实现 其方法是先对
  • Uni-App开发框架介绍

    Uni App开发框架介绍 1 Uni App简介 Uni App是一家公司 DCloud 产品 公司承诺将一直开源且免费 公司旗下有4个产品 HBuilder X 开发工具 uni app 跨平台统一框架 uniCloud 云服务提供商
  • 浏览器的事件轮询(消息轮询)

    目录 浏览器的进程模型 何为进程 何为线程 浏览器有哪些进程和线程 渲染主线程是如何 作的 相关问题 何谓异步 JS为什么会阻塞渲染 JS 中的计时器为什么无法精确计时 任务队列与优先级 浏览器的进程模型 何为进程 程序运 需要有它 专属的
  • 【AI with ML】第 11 章 :对序列模型使用卷积和递归方法

    大家好 我是Sonhhxg 柒 希望你看完之后 能对你有所帮助 不足请指正 共同学习交流 个人主页 Sonhhxg 柒的博客 CSDN博客 欢迎各位 点赞 收藏 留言 系列专栏 机器学习 ML 自然语言处理 NLP 深度学习 DL fore
  • 操作系统复习【南邮】

    声明 操作系统系列只针对南邮操作系统课程重点进行梳理 尽量不要作为考研复习资料 可能会有缺失之类 也恳请读者进行批评指正 共同进步 参考教材 操作系统教程 人民邮电出版社 黄刚 徐小龙 段卫华编著 2009 9
  • ChatGPT开源系列

    目录 进化树 从GPT 4 可以看出未来 LLM 的哪些趋势 未来的研发方向和优化策略是什么 模型 Stanford Alpaca 可以借鉴的点 llama cpp 验证阶段已完成 nebullvm chatllama 待定 可以借鉴的点
  • sql注入的分类总结

    前言 之前对联合查询 报错注入 布尔盲注 延迟注入 对这几种类型模糊不定 我也查阅了一些资料 做了一点总结 希望对大家有帮助 对于SELECT语句 我们通常分其为两种情况 有回显和无回显 有回显 什么是有回显 我们举个例子当我们看到一个ur
  • typedef struct语法解释

    C语言源代码 typedef char datatype typedef struct node datatype data struct node lchild rchild bintnode typedef bintnode bintr
  • Pytest系列-快速入门和基础讲解(1)

    前言 目前有两种纯测试的测试框架 pytest和unittest unittest应该是广为人知 而且也是老框架了 很多人都用来做自动化 无论是UI还是接口 pytest是基于unittest开发的另一款更高级更好用的单元测试框架 单元测试