0
点赞
收藏
分享

微信扫一扫

Pytest快速入门

一、前言

  • 目前Python做自动化测试常用的框架有pytest和unittest
  • unittest作为Python默认默认的单元测试框架是广为人知,由于其历史悠久,很多人都用来做自动化
  • pytest是基于unittest开发的另一款更高级更好用的单元测试框架
  • pytest能直接兼容unittest用例,易用性也更好

二、Pytest的特点

Pytest 可以用来做 系统测试 的自动化, 它的特点有

  • 用 Python 编写测试用例,简便易用
  • 可以用 文件系统目录层次 对应 手工测试用例 层次结构
  • 灵活的 初始化清除 机制
  • 可以灵活挑选测试用例执行
  • 利用第三方插件,可以生成美观的可视化的报表

三、安装Pytest

直接执行 如下命令即可安装 pytest

pip install pytest

中文文档:https://www.osgeo.cn/pytest/contents.html

四、快速上手

4.1.Pytest 自动化测试用例规则

官方文档 给出了 pytest 寻找 测试项 的 具体规则:

  • 如果未指定命令行参数,则从 testpath(如果已配置)或当前目录开始收集。
  • 如果命令行参数, 指定了 目录、文件名 或 node id 的任何组合,则按参数来找
  • 寻找过程会递归到目录中,除非它们匹配上 norecursedirs。
  • 在这些目录中,搜索由其测试包名称导入的 test_*.py 或 *_test.py 文件。

从这些文件中,收集如下测试项:

  • test为前缀 的 函数
  • Test为前缀的 类 里面的 test为前缀的方法
  • 以 Test 开头的类,不能包含 __init__ 方法
  • 所有的包 package 必须要有__init__.py 文件

4.2.测试用例代码

编写的测试用例代码文件, 必须以 test__testtest_case01.py下面。

内容如下:

class Test_pass:

    def test_01(self):
        print('********用例01********')
        assert 1 == 1

    def test_02(self):
        print('********用例02********')
        assert 2 == 2
        
    def test_03(self):
        print('********用例03********')
        assert 3 == 2

注意:

  • 如果把测试用例存放在类中, 类名必须以 Testtest 为前缀的方法。
  • pytest 中用例的检查点 直接用 Python 的 assert 断言。
  • assert 后面的表达式结果 为 True ,就是 检查点 通过,结果为False ,就是检查点 不通过。

4.3.运行测试

  • 执行测试非常简单,打开命令行窗口,进入项目根目录(我们这里就是 test_case),执行命令程序 pytest ./test_case/test_case01.py 即可,上面的示例执行结果如下

Pytest快速入门_用例

显示找到3个测试项,2个执行通过,1个不通过。通过的用例 是用一个小点表示, 不通过的用例用一个F表示,并且会在后面显示具体不通过的用例 和不通过的检查点 代码细节。

  • pytest 不会使用print打印的内容。如果我们希望 显示测试代码中print的内容,因为这些打印语句在调试代码时很有用,可以加上命令行参数 -s,例如:

pytest -s .\test_case\test_case01.py

执行后如下图:

Pytest快速入门_html_02

  • 如果我们希望得到更详细的执行信息,包括每个测试类、测试函数的名字,可以加上参数 -v,这个参数可以和 -s 合并为 -sv,如下:

pytest -sv .\test_case\test_case01.py

执行后如下图:

Pytest快速入门_html_03

  • 执行 pytest 时, 如果命令行没有指定目标目录 或者 文件, 它会自动搜索当前目录下所有符合条件的文件、类、函数。为了防止 pytest 到其他目录中找测试用例项,执行测试时,我们可以在命令行加上目标目录名字 ,就像上面这样:

#指定是从项目根目录下的test_case中查找执行
pytest -sv ./test_case

4.4.产生报告

前面在安装pytest,我们需要安装 pytest-html 插件,这个插件就是pytest用来产生测试报告的。

pip install pytest-html

要产生报告,在命令行加上 参数 --html=report.html --self-contained-html ,如下

pytest ./test_case/test_case01.py --html=report.html --self-contained-html

这样就会产生名为 report.html 的测试报告文件,可以在浏览器中打开

五、Pycharm运行Pytest

平时写代码都在Pycharm写的,怎么可能一直用cmd来跑用例呢,现在我们就来看看在Pycharm中如何运行Pytest

  1. 首先,我们先要去settings里面设置单元测试框架为Pytest
  2. 如果是nosetests的话,右键运行是以python脚本运行的哦
  3. 如果设置了unittest则是以unittest框架去运行

如下图所示

Pytest快速入门_用例_04

运行如下:

Pytest快速入门_测试用例_05

注意

  • pytest 可以兼容 unittest 用例,之前写的 unittest 用例也能用 pytest 框架去运行



举报

相关推荐

0 条评论