• 单元测试界的高富帅Pytest框架,手把手教学,从入门到精通


    本文主要介绍pytest的入门级使用。稍后,将为pytest中的每个函数提供详细的教程。

    一、准备:环境安装

    pytest 是 python 中的第三方库,使用之前需要先安装,在命令行中运行以下安装命令 :

    1. pip insatll pytest
    2. 复制代码

    检查安装是否成功以及安装的版本,命令行命令如下:

    1. pytest --version
    2. 复制代码

    执行上述命令,能够输出版本信息,那就说明安装成功啦。

    二、用例编写

    当我们通过 pytest 执行用例时,pytest 会自动递归遍历执行路径下所有的目录,根据 pytest 中默认用例的识别的规则,自动收集测试用例。所有在使用 pytest 编写测试用例之前,我们首先需要了解一下 pytest 收集用例时默认的用例识别规则。

    1、默认的用例识别的规则

    • 1、用例文件:所有文件名为 test_ 开头 或者 _test 开头的文件会被识别为用例文件。
    • 2:用例类,测试文件中每个 Test 开头的类就是一个测试用例类。
    • 3、测试用例:测试类中每个 test 开头的方法就是一条测试用例,测试文件中每个 test 开头的函数也是一条测试用例,

    备注:上述默认的用例查找规则,可在 pytest 的配置文件进行修改(后续章节会详细介绍配置文件的使用)

    另外 pytest 兼容 unittest,以 unittest 的用例编写规范写的用例,pytest 都能够识别出来

    通过了解上述 pytest 中用例识别的规则,可以知道 pytest 中用例编写,能使用函数的形式,也能使用类的形式,那么接下来就分别给大家介绍一下这两种方式编写用例。

    2、函数形式编写用例

    规则:用例方法名以 test 开头即可

    1. # \testcases\test_demo1.py
    2. def test_demo():
    3. assert 100 == 100
    4. 复制代码

    使用命令 pytest 就可以执行测试函数,输出结果如下:

    1. C:\testcases>pytest
    2. ======================test session starts ======================
    3. platform win32 -- Python 3.7.3, pytest-5.4.2, py-1.8.0, pluggy-0.13.0
    4. rootdir: C:\testcases
    5. plugins: testreport-1.1.2
    6. collected 1 item
    7. test_demo1.py . [100%]
    8. ====================== 1 passed in 0.26s ======================
    9. 复制代码

    3、以类的形式编写用例

    规则:测试类命名以 Test 开头,用例方法以 test 开头

    1. # test_demo2.py
    2. class TestDome:
    3. def test_demo1(self):
    4. assert 11 == 11
    5. def test_demo(self):
    6. assert 22 == 21
    7. 复制代码

    命令 pytest 运行上述用例,结果如下:

    1. ====================== test session starts ======================
    2. platform win32 -- Python 3.7.3, pytest-5.4.2, py-1.8.0, pluggy-0.13.0
    3. rootdir: C:\testcases
    4. plugins: testreport-1.1.2
    5. collected 2 items
    6. test_demo1.py .F [100%]
    7. ====================== FAILURES ======================
    8. ___________ TestDome.test_demo ____________
    9. self = <test_demo1.TestDome object at 0x0445F450>
    10. def test_demo(self):
    11. > assert 22 == 21
    12. E assert 22 == 21
    13. test_demo1.py:25: AssertionError
    14. ====================== short test summary info =======================
    15. FAILED test_demo1.py::TestDome::test_demo - assert 22 == 21
    16. ====================== 1 failed, 1 passed in 0.53s ======================
    17. 复制代码

    上面的运行结果可以看出来,一条用例执行通过,一条执行失败

    三、执行测试

    在上面我们使用的是 pytest 这个命令去执行测试用例。关于 pytest 执行测试,有两种方式,一种是命令行通过 pytest 这个命令执行,另外在代码中可以通过 pytest.main() 这个方法来执行测试。接下来就和大家分别详细的介绍一下 pytest 执行测试的方式和常用的参数

    1、执行参数

    测试用例

    1. # 测试用例
    2. class TestDome:
    3. def test_demo1(self):
    4. print('----测试用例执行-----------')
    5. assert 11 == 11
    6. 复制代码

    参数 -v : 显示测试的详细参数信息

    1. C:\testcases>pytest -s
    2. =========================== test session starts ===========================
    3. platform win32 -- Python 3.7.3, pytest-5.4.2, py-1.8.0, pluggy-0.13.0
    4. rootdir: C:\testcases
    5. plugins: testreport-1.1.2
    6. collected 1 item
    7. test_demo1.py::TestDome::test_demo1 ----测试用例执行---输出1--------
    8. ----测试用例执行---输出2--------
    9. PASSED
    10. =========================== 1 passed in 0.28s ===========================
    11. 复制代码

    2、pytest.main 执行的参数传递

    pytest.main 方法执行测试参数传递方式:

    所以的参数放在列表中,每个参数就是列表中的一个元素

    1. pytest.main(['-v','-s'])
    2. 复制代码

    详细的参数可以使用命令 pytest -h 查看

    3、指定执行的测试目录

    命令 pytest 测试目录路径

    1. pytest testcase/
    2. 复制代码

    pytest 会执行指定目录路径下所有的测试用例

    4、指定执行的测试文件

    命令 pytest 测试文件路径

    1. pytest testcase/test_demo1.py
    2. 复制代码

    pytest 会执行指定测试文件中下所有的测试用例

    5、指定执行的测试类

    命令 pytest 测试文件::测试类

    1. pytest testcase/test_demo1.py::TestClass
    2. 复制代码

    pytest 会执行指定测试类里面所有的测试用例

    6、指定执行的测试用例

    命令 pytest 测试文件::测试类::测试方法

    1. pytest testcase/test_demo1.py::TestClass::test_method
    2. 复制代码

    pytest 会执行指定的测试方法

    基本的入门就给大家介绍到这里


    绵薄之力

    最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走

    自动化测试视频教程

    面试资料

    我们学习软件测试必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作

    ​​这些资料,对于想进阶【自动化测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。希望对大家有所帮助…….

  • 相关阅读:
    使用cpolar发布树莓派网页(cpolar功能的完善)
    利用hive中的行转列列转行处理字段中逗号分隔的重复数据
    在IDEA中使用.env文件配置信息
    经典卷积和深度卷积的神经网络
    算法 - 递归实现汉诺塔(The Tower of Hanoi)
    递归经典例题 --- 青蛙跳台阶(图文详解)
    webpack代码分离
    主流电商平台价格如何高频监测
    【区块链 | IPFS】IPFS cluster私有网络集群搭建
    使用BASE64实现编码和解码
  • 原文地址:https://blog.csdn.net/IT_LanTian/article/details/127703804