Pytest系列(1) - 快速入门和基础讲解
如果你还想从头学起Pytest,可以看看这个系列的文章哦!
https://www.cnblogs.com/poloyy/category/1690628.html
前言
- 目前有两种纯测试的测试框架,pytest和unittest
- unittest应该是广为人知,而且也是老框架了,很多人都用来做自动化,无论是UI还是接口
- pytest是基于unittest开发的另一款更高级更好用的单元测试框架
- 出去面试也好,跟别人说起来也好,pytest的逼格明显高于unittest
为什么要用Pytest
pytest 的官方网站介绍,它具有如下特点:
- 非常容易上手,入门简单,文档丰富,文档中有很多实例可以参考
- 能够支持简单的单元测试和复杂的功能测试
- 支持参数化
- 执行测试过程中可以将某些测试跳过(skip),或者对某些预期失败的case标记成失败
- 支持重复执行(rerun)失败的 case
- 支持运行由 nose, unittest 编写的测试 case
- 可生成 html 报告
- 方便的和持续集成工具 jenkins 集成
- 可支持执行部分用例
- 具有很多第三方插件,并且可以自定义扩展
安装Pytest
cmd运行
pip install -U pytest pip3 install pytest -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com
查看版本
pytest --version
快速开始
#!/usr/bin/env python
# -*- coding: utf-8 -*- """
__title__ =
__Time__ = 2020-04-06 12:33
__Author__ = 小菠萝测试笔记
__Blog__ = https://www.cnblogs.com/poloyy/
""" def func(x):
return x + 1 def test_answer():
assert func(3) == 5 class TestClass:
def test_one(self):
x = "this"
assert "h" in x def test_two(self):
x = "hello"
assert hasattr(x, "check")
然后,cmd进入当前文件目录,直接执行
pytest

知识点
- 如果只执行 pytest ,会查找当前目录及其子目录下以 test_*.py 或 *_test.py 文件,找到文件后,在文件中找到以 test 开头函数并执行
- 如果只想执行某个文件,可以 pytest start.py
- 加上-q,就是显示简单的结果: pytest -q start.py
Pytest用例的设计原则
用Pytest写用例时候,一定要按照下面的规则去写,否则不符合规则的测试用例是不会执行的
- 文件名以 test_*.py 文件和*_test.py
- 以 test_ 开头的函数
- 以 Test 开头的类,不能包含 __init__ 方法
- 以 test_ 开头的类里面的方法
- 所有的包 pakege 必项要有__init__.py 文件
Pytest执行用例规则
注意,下面讲的都是在cmd中执行pytest命令
1、某个目录下所有的用例
pytest
2、执行某一个 py 文件下用例
pytest 脚本名称.py
3、运行start.py 模块里面的某个函数,或者某个类,某个类里面的方法
加v和不加-v都可以,加-v的话,打印的信息更详细
pytest -v 08_mark.py::TestClass::test_method pytest 08_mark.py::TestClass::test_method pytest start.py::test_answer
4、运行start.py 模块里面,测试类里面的某个方法
pytest start.py::TestClass::test_two
5、-m 标记表达式(后续讲解)
pytest -m login
将运行用 @pytest.mark.login 装饰器修饰的所有测试,后面再展开讲标记哦
6、-q 简单打印,只打印测试用例的执行结果
pytest -q start.py
7、-s 详细打印
pytest -s start.py
8、-x 遇到错误时停止测试
pytest start.py -x
9、—maxfail=num,当用例错误个数达到指定数量时,停止测试
pytest start.py --maxfail=1
10、-k 匹配用例名称
执行测试用例名称包含http的所有用例
pytest -s -k http start.py
11、-k 根据用例名称排除某些用例
pytest -s -k "not http" start.py
12、-k 同时匹配不同的用例名称
pytest -s -k "method or weibo" start.py
Pycharm运行Pytest
平时写代码,咱们都在Pycharm写的,怎么可能一直用cmd来跑用例呢,现在我们就来看看在Pycharm中如何运行Pytest
- 首先,我们先要去settings里面设置单元测试框架为Pytest
- 如果是nosetests的话,右键运行是以python脚本运行的哦
- 如果设置了unittest则是以unittest框架去运行


注意
Pytest系列(1) - 快速入门和基础讲解的更多相关文章
- SpringBoot系列: RestTemplate 快速入门
====================================相关的文章====================================SpringBoot系列: 与Spring R ...
- Flask开发系列之快速入门
Flask开发系列之快速入门 文档 一个最小的应用 调试模式 路由 变量规则 构造 URL HTTP 方法 静态文件 模板渲染 访问请求数据 环境局部变量 请求对象 文件上传 Cookies 重定向和 ...
- Git 快速入门--Git 基础
Git 快速入门 Git 基础 那么,简单地说,Git 究竟是怎样的一个系统呢? 请注意接下来的内容非常重要,若你理解了 Git 的思想和基本工作原理,用起来就会知其所以然,游刃有余. 在开始学习 G ...
- Html与CSS快速入门02-HTML基础应用
这部分是html细节知识的学习. 快速入门系列--HTML-01简介 快速入门系列--HTML-02基础元素 快速入门系列--HTML-03高级元素和布局 快速入门系列--HTML-04进阶概念 示例 ...
- Html与CSS快速入门03-CSS基础应用
这部分是html细节知识的学习. 快速入门系列--HTML-01简介 快速入门系列--HTML-02基础元素 快速入门系列--HTML-03高级元素和布局 快速入门系列--HTML-04进阶概念 边框 ...
- BIML 101 - ETL数据清洗 系列 - BIML 快速入门教程 - 序
BIML 101 - BIML 快速入门教程 做大数据的项目,最花时间的就是数据清洗. 没有一个相对可靠的数据,数据分析就是无木之舟,无水之源. 如果你已经进了ETL这个坑,而且预算有限,并且有大量的 ...
- BIML 101 - ETL数据清洗 系列 - BIML 快速入门教程 - 连接数据库执行SQL语句
BIML 101 - BIML 快速入门教程 第一节 连接数据库执行SQL语句 本小节将用BIML建一个简单的可以执行的包. 新建一个biml文件,贴入下面的代码 1 <Biml xmlns=& ...
- Maven系列之快速入门
文章结构 唯快不破---Maven快速入门 稳打稳扎---Maven核心知识 实用为先---Maven如何建立Web项目 1 唯快不破---Maven快速入门 1.1 Maven项目 ...
- 【笔记】PyTorch快速入门:基础部分合集
PyTorch快速入门 Tensors Tensors贯穿PyTorch始终 和多维数组很相似,一个特点是可以硬件加速 Tensors的初始化 有很多方式 直接给值 data = [[1,2],[3, ...
随机推荐
- Java 集合、数组排序
在平时开发的过程中,经常会遇到需要对数组.集合中元素按规则进行排序,本文记录在开发过程中可能遇到的情况以及相关的完整代码示例. 知识点 Comparable<T>接口 实现了该接口的对象, ...
- web前端 关于浏览器兼容的一些知识和问题解决
浏览器兼容 为什么产生浏览器兼容,浏览器兼容问题什么是浏览器兼容: 所谓的浏览器兼容性问题,是指因为不同的浏览器对同一段代码有不同的解析,造成页面显示效果不统一的情况. 浏览器兼容产生的原因: 因为不 ...
- python之路-基本数据类型之list列表
1.概述 列表是python的基本数据类型之一,是一个可变的数据类型,用[]方括号表示,每一项元素使用逗号隔开,可以装大量的数据 #先来看看list列表的源码写了什么,方法:按ctrl+鼠标左键点li ...
- js的Set和Map集合
目录 1.js的Set介绍 1-1.Set基础用法 1-2.Set对象的操作方法 1-3.Set对象的遍历方法 2.js的Set扩展WeakSet篇 3.js的Map介绍 3-1.Map基础用法 3- ...
- AI广度优先搜索算法,项目实战北京地图/贪心学院
广度优先搜索算法详解地铁路线 北京很大,附上地铁图,不要迷路!!! 作为一个程序员,在北京,你很有可能住在回龙观地区,经常从龙泽上地铁,然后畅游北京. 当有一天,你老家的朋友来北京了,希望你能够带她去 ...
- 2019年高校微信小程序开发大赛学习笔记
学做小程序(学堂在线笔记)一.传统布局 text-align:center //水平居中 margin-bottom: 60px //设置间距 二.弹性盒子布局 display:flex; flex- ...
- 【剑指Offer】简单部分每日五题 - Day 1
今天开始更新leetcode上<剑指Offer>的题解,先从简单难度开始.预计按下列顺序更新: 简单难度:每日5题 中等难度:每日3题 困难难度:每日1题 17 - 打印从1到最大的n位数 ...
- Python卸载
前言 自己瞎折腾下载Python3.8.2,把之前下载好的python3.7.3覆盖掉.在运行之前Python环境的程序多次未果后.找到原因,Python3.7.3的包不支持Python3.8.2.于 ...
- ASP.NET Core ActionFilter引发的一个EF异常
最近在使用ASP.NET Core的时候出现了一个奇怪的问题.在一个Controller上使用了一个ActionFilter之后经常出现EF报错. InvalidOperationException: ...
- springboot项目中接口入参的简单校验
.katex { display: block; text-align: center; white-space: nowrap; } .katex-display > .katex > ...