python单元测试框架pytest介绍
作者:小旭2021 发布时间:2021-06-11 15:28:55
pytest是python语言中一款强大的单元测试框架,用来管理和组织测试用例,可应用在单元测试、自动化测试工作中。
unittest也是python语言中一款单元测试框架,但是功能有限,没有pytest灵活。
就像:苹果电脑mac air和mac pro一样。都是具备同样的功能,但是好用,和更好用。
本文包含以下几个内容点:
1)pytest的简单示例
2)pytest的安装
3)pytest的特征、与unittest的区别。
4) pytest如何自动识别用例。
5)pytest框架中,用例的运行顺序。
1)pytest写用例很简单
下面是一个简单的例子:
import random
def test_demo():
assert 7 == random.randint(0,10)
运行结果如下:
============================= test session starts =============================
platform win32 -- Python 3.7.2, pytest-4.6.3, py-1.8.0, pluggy-0.12.0
rootdir: D:\Pychram-Workspace\STUDY_PYTEST
plugins: allure-pytest-2.6.5, html-1.21.1, metadata-1.8.0, rerunfailures-7.0collected 1 item
simple.py F
simple.py:10 (test_demo)
7 != 6
Expected :6
Actual :7
========================== 1 failed in 0.14 seconds ===========================
2)pytest的安装
安装命令:
pip install pytest
3)pytest的特征、与unittest的区别。
pytest的特征如下:
3.1 自动识别测试用例。(unittest当中,需要引入TestSuite,主动加载测试用例。)
3.2 简单的断言表达:assert表达式即可。(unittest当中,self.assert*)
3.3 有测试会话、测试模块、测试类、测试函数级别的fixture。(unittest当中是测试类、测试函数级别的fixture)
3.4有非常丰富的插件,目前在600+,比如allure插件。(unittest无)
3.5测试用例不需要封装在测试类当中。(unittest中需要自定义类并继承TestCase)
那么pytest是如何自动识别测试用例的呢?我们在编写pytest用例的时候,需要遵守哪些规则呢?
4) pytest如何自动识别用例
识别规则如下:
1、搜索根目录:默认从当前目录中搜集测试用例,即在哪个目录下运行pytest命令,则从哪个目录当中搜索;
2、搜索规则:
1)搜索文件:符合命名规则 test_*.py 或者 *_test.py 的文件
2)在满足1)的文件中识别用例的规则:
2.1)以test_开头的函数名;
2.2)以Test开头的测试类(没有__init__函数)当中,以test_开头的函数
示例:在D:\pycharm_workspace目录下,创建一个python工程,名为study_pytest。在工程下,创建一个python包,包名为TestCases。
在包当中,创建一个测试用例文件:test_sample_1.py。文件内容如下:
#!/usr/bin/python3
# -*- coding: utf-8 -*-
# 定义py文件下的测试用例
def test_sample():
print("我是测试用例!")
class TestSample:
def test_ss(self):
print("我也是测试用例!")
def hello_pytest(self):
print("hi,pytest,我不是用例哦!!")
按照上面定义的搜索规则,需要跳转到工程目录,然后再执行命令:pytest -v
。 执行结果如下:
让我们愉快的加进来第2个测试文件:test_sample_2.py,内容如下:
#!/usr/bin/python3
# -*- coding: utf-8 -*-
def add(a,*args):
sum = a
for item in args:
sum += item
return sum
def test_add_two_number():
assert 33 == add(11,22)
assert 55.55 == add(22.22,33.33)
def test_add_three_number():
assert 101 == add(10,90,1)
再次运行命令:pytest -v
得到如下结果:
通过多个用例文件的执行,可以看出用例的执行顺序。
5) pytest中用例的执行顺序
原则:先搜索到的py文件中的用例,先执行。在同一py文件当中,按照代码顺序,先搜索到的用例先执行。
来源:https://www.cnblogs.com/chenyablog/p/15162324.html


猜你喜欢
- 本文实例讲述了JavaScript实现隐藏省略文字效果的方法。分享给大家供大家参考,具体如下:<html> <
- 1、MySQL常用命令create database name; 创建数据库use databasename; 选择数据库drop data
- 先给大家介绍下python中random模块random与numpy.random对比:1、random.random():生成[0,1)之
- Nextcloud 是一款自由 (开源) 的类 Dropbox 软件,由 ownCloud 分支演化形成。它使用 PHP 和 JavaScr
- beego中各类数据库连接方式beego 框架是优秀得go REST API开发框架。下面针对beego中各类数据库连接操作做一个总结。or
- 本文实例总结了Python常用的小技巧。分享给大家供大家参考。具体分析如下:1. 获取本地mac地址:import uuidmac = uu
- 输入:[1.0000, -1.0000, 3.0000]课本中的标准差计算公式:按照上述公式计算:Numpy中的std计算:import n
- 1,新建一个项目File --> New Project...2,新建一个文件右键单击刚建好的helloWord项目,选择New --
- 一.Numpy库1.什么是numpy?numpy是python进行科学计算的一个基础软件包,他是一个python库,提供多维数组
- 本文所述实例为Python处理文本文件并生成指定格式文件的方法,具体实现功能代码如下所示:import osimport sysimport
- 目录前言:另一用法sort 与 sorted 区别:前言:加入我需要对如下几个文件按照从下到大排序,可是他的关键字有多个应该怎么办了?例如我
- scipy.optimize函数使用简单使用scipy.optimize,训练逻辑回归损失函数,得到权值。scipy.optimize模块包
- Javascript中标签(label)是一个标识符。标签可以与变量重名,它是一个独立的语法元素(既不是变量,也不是类型),其作用是标识”标
- 前言argsparse是python的命令行解析的标准模块,内置于python,不需要安装。这个库可以让我们直接在命令行中就可以向程序中传入
- 四大前缀除了普通的字符串,python在字符串前面可以有4个前缀,即frub。其中,f字符串可将{}中的变量转为字符串;r表示取消转义;u表
- 这篇文章主要介绍了Python scrapy增量爬取实例及实现过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学
- 本文实例讲述了mysql 设置自动创建时间及修改时间的方法。分享给大家供大家参考,具体如下:第一种,通过ddl进行定义CREATE TABL
- NumPy's main object is the homogeneous multidimensional array. It
- vue3 reactive函数用法reactive的用法与ref的用法相似,也是将数据变成响应式数据,当数据发生变化时UI也会自动更新。不同
- 一、下载MySQL数据库并进行安装和配置下载地址:https://dev.mysql.com/downloads/installer/二、下