01-初识pytest测试框架

 

前言

  • 目前接触到的测试框架:pytest 和 unittest;
  • unittest是很早使用的框架,较于pytest,它用例格式复杂,兼容性差,插件少,但二次开发更方便。本公司还在用……
  • pytest 比unittest框架更简洁和高效,且可以兼容 unittest 框架,支持单元测试和复杂的功能测试,可以和appium、selenium结合使用,实现自动化功能测试,和requests结合使用,实现接口测试
  • pytest支持300多种插件,一个字:牛??

 

官网介绍,特点如下:

  • 非常容易上手,入门简单,文档丰富,文档中有很多实例可以参考
  • 能够支持简单的单元测试和复杂的功能测试
  • 支持参数化
  • 执行测试过程中可以将某些测试跳过(skip),或者对某些预期失败的case标记成失败
  • 支持重复执行(rerun)失败的 case
  • 支持运行由 nose, unittest 编写的测试 case
  • 可生成 html 报告
  • 方便的和持续集成工具 jenkins 集成
  • 可支持执行部分用例
  • 具有很多第三方插件,并且可以自定义扩展

 

安装:

pip install -U pytest

查看版本

pytest --version

 

用例的识别与运行

用例编写规范

  • 测试文件以 test_ 开头或以 _test 结尾
  • 测试类以 Test 开头 ,并且不能带有 __init__ 方法
  • 测试函数以 test_ 开头
  • 断言使用基本的 assert 即可
  • 所有的包 pakege 必须要有__init__.py 文件

 

创建文件名为 test_add.py 文件,代码如下:

 1 import pytest
 2 
 3 def add(x,y):
 4     return x + y
 5 
 6 @pytest.mark.add
 7 def test_add():
 8     assert add(1,2) == 3
 9     assert add(2,3) == 5
10     assert add(10,2) == 12
11 
12 class TestDemo:
13 
14     def test_demo(self):
15         x = "hello world"
16         print(f"{x} python")
17         assert h in x
18 
19     def test_demo2(self):
20         x = hello
21         assert hasattr(x,"check")

可以直接使用pytest命令运行,pytest会找当前目录以及递归查找子目录下的所有的 test_*.py 或 *_test.py 的文件,把其当做测试文件。在这些文件里,pytest 会收集符合编写规范的函数、类以及方法,当作测试用例并执行。

执行如下:

$ pytest test_add.py 
....                                                                                                                     

test_add.py ..F                                                                                                                   [100%]
....


self = <test_add.TestDemo object at 0x7f885351b280>

    def test_demo2(self):
        x = hello
>       assert hasattr(x,"check")
E       AssertionError: assert False
E        +  where False = hasattr(hello, check)

test_add.py:28: AssertionError

======================================================= 1 failed, 2 passed in 0.05s ========================================================

结果分析:

执行结果中, F 代表用例未通过(断言错误), . 代表用例通过。如果报错会有详细的错误信息, pytest 也支持运行unittest 模式的用例。

 

 

写在最后的话:小白同学愿意和大家一起成长~

 

01-初识pytest测试框架

上一篇:最终一致和强一致性缓存实践


下一篇:RabbitMQ_5、主题模式