python单元测试框架pytest介绍

 更新时间:2022年06月30日 09:16:51   作者:小旭2021  
这篇文章介绍了python的单元测试框架pytest,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

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文件当中,按照代码顺序,先搜索到的用例先执行。

到此这篇关于python单元测试框架pytest的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • python实现马丁策略回测3000只股票的实例代码

    python实现马丁策略回测3000只股票的实例代码

    这篇文章主要介绍了python实现马丁策略回测3000只股票,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-01-01
  • Python的字符串操作简单实例

    Python的字符串操作简单实例

    这篇文章主要介绍了Python的字符串操作简单实例,字符串有许多种操作方式,本文带来几个操作实例,快来一起看看吧
    2023-04-04
  • 分享7个 Python 实战项目练习

    分享7个 Python 实战项目练习

    这篇文章主要介绍了分享7个 Python 实战项目代码,经过Python3.6.4调试通过的代码,就具一点的参考价值,需要的小伙伴可以参考一下
    2022-03-03
  • python检测IP地址变化并触发事件

    python检测IP地址变化并触发事件

    这篇文章主要为大家详细介绍了python检测IP地址变化并触发事件,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-12-12
  • Django用户认证系统 Web请求中的认证解析

    Django用户认证系统 Web请求中的认证解析

    这篇文章主要介绍了Django用户认证系统 Web请求中的认证解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-08-08
  • Pytorch中的torch.nn.Linear()方法用法解读

    Pytorch中的torch.nn.Linear()方法用法解读

    这篇文章主要介绍了Pytorch中的torch.nn.Linear()方法用法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-02-02
  • python文件操作的基础详细讲解(write、read、readlines、readline)

    python文件操作的基础详细讲解(write、read、readlines、readline)

    使用python来读写文件是非常简单的操作,下面这篇文章主要给大家介绍了关于python文件操作的基础详细资料,包括write、read、readlines、readline等相关操作,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2022-04-04
  • Pytorch 实现权重初始化

    Pytorch 实现权重初始化

    今天小编就为大家分享一篇Pytorch 实现权重初始化,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-12-12
  • python中if和elif的区别介绍

    python中if和elif的区别介绍

    这篇文章主要介绍了python中if和elif的区别,下面文章将举多个例子围绕if和eli的相关资料展开内容,需要的朋友可以参考一下,希望对你有所帮助
    2021-11-11
  • Python中zip()函数用法实例教程

    Python中zip()函数用法实例教程

    这篇文章主要介绍了Python中zip()函数用法实例教程,对Python初学者有一定的借鉴价值,需要的朋友可以参考下
    2014-07-07

最新评论