pytest系列——入门篇

图片

迅捷小莫

迅捷小莫

本公众号日常更新自动化技术,编程知识,迅捷掌握一切测试工程师需要的技术!

12篇原创内容

公众号

Pytest

前段时间,写了一个插件pytest-tmreport,也有很多小伙伴给出了反馈,在这里小提莫非常感谢大家的支持。

为了让大家对pytest这个火爆全网的测试框架有更深入的了解,后续会出一个pytest系列,大家多多关注。

那么本期给大家带来的是pytest的入门教程。

01

介绍

首先pytest是一个成熟的全功能的Python测试工具,可以帮助你写出更好的程序。

那么在学习之前,我们要先分清楚概念,pytest是自动化框架吗?

**答案肯定是,No。**pytest是个单元测试框架,而并非自动化框架,市面上我们通常称unittest, pytest, nose等框架为单元测试框架,而像httprunner这种支持多种功能如框架功能,测试报告 ,性能测试等等,由多个工具集成起来的框架,我们称为自动化框架。所以各位不要再把pytest说成自动化框架了pytest是单元测试框架!

pytest官网地址:

https://docs.pytest.org/en/6.2.x/

在开始之前我们先来比较一下市面上的主流的单元测试框架。

框架对比

功能

pytest

unittest

nose

用例编写

执行器

py.test

自己实现

nosetests

检索机制

支持

支持

支持

Fixture

支持

支持

支持

用例标签

支持

不支持

支持

超时机制

支持

不支持

支持

参数化

支持

结合ddt

支持

测试报告

支持

支持

支持

日志

支持

不支持

支持

并发执行

支持

不支持

支持

第三方插件

支持

不支持

支持

在比较了三个框架后,可以看到,无论从框架功能来说,还是用例编写难度,扩展性来说, pytest无疑就是最好的选择,unittest是Python自带的单元测试框架,功能较少需要自己实现,而nose就更加冷门了,一般很少人会去用。所以我们要下定决心,学好pytest。

02

环境配置

首先在使用前,需要pip安装

pip install pytest

安装完毕后,如果你是用的pycharm写代码,我们需要对其进行一下设置,路径为Preferences-Tools-Python integrated Tools

图片

这样可以把我们的默认执行器切换为pytest,默认是unittest。

03

编写第一个用例

我们来创建一个test_pytest.py文件,并定义一个函数,类似下面这样:

import pytest  # 导入pytest


def test_pytest():  # 定义测试函数
    print("test_pytest run")


if __name__ == '__main__':  # 定义主函数
    pytest.main()  # 调用pytest

可以看到,这时测试函数和主函数左侧会出现一个小箭头:

图片

我们点击执行一下,控制台输出了以下信息:

图片

可以看到,左侧出现了执行结果列表,如果没有出现需要检查一下上面pycharm的配置,如果你照着做了还是不对,那么可能是右上角那块的执行器的问题,需要删除后重新执行。右侧 可以看到是我们的执行信息的输出,非常的方便。

怎么样,是不是so easy,那么除了上面一种pytest的用例编写方式,这种是基于测试函数的,实际上还存在另一种,基于测试类的:

import pytest  # 导入pytest


class TestPytest:
    def test_pytest(self):  # 定义测试函数
        print("test_pytest run")


if __name__ == '__main__':  # 定义主函数
    pytest.main()  # 调用pytest

执行结果如下:

图片

所以我们总结一下,pytest支持以下两种用例编写形式:

  1. 基于测试函数

  2. 基于测试类

而我们的unittest中,只支持一种:

1. 基于测试类的(并且是TestCase的子类)

04

pytest的用例检索规则

在pytest中,测试用例需要满足以下条件:

  1. 测试文件名以test_开头或者_test结尾

  2. 测试类要以Test开头

  3. 测试函数要以test_开头

当我们使用pytest命令行执行,pytest会去找到当前目录下所有的满足以上要求的文件,测试函数以及测试类,把他们识别为测试用例,这样子pytest才能够去执行,否则你只能在执行的时候指定测试文件名,测试类以及测试函数。

pytest的命令行执行格式如下:

pytest 测试文件名::测试类::测试方法
OR
pytest 测试文件名::测试函数

而直接使用pytest,则会找当前路径下的,如下:

 pytest
========================================================================================================================== test session starts ==========================================================================================================================
platform darwin -- Python 3.8.2, pytest-6.2.1, py-1.10.0, pluggy-0.13.1
rootdir: /Users/zhangyingkai/PycharmProjects/pytest_demo
collected 1 item                                                                                                                                                                                                                                                        

test_pytest.py .                                                                                                                                                                                                                                                  [100%]

=========================================================================================================================== 1 passed in 0.01s ===========================================================================================================================

本期的内容比较简单,比较适合初学者,后续会一步步进阶 ,一步一个脚印!麻烦动动小手,点个关注哦!

迅捷小莫

迅捷小莫

本公众号日常更新自动化技术,编程知识,迅捷掌握一切测试工程师需要的技术!

12篇原创内容

公众号

图片

微信号|ya1kaikai

· 迅捷小侯 ·

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值