当前位置:   article > 正文

自动化测试 —— Pytest测试框架_pytest自动化测试

pytest自动化测试

01 | 简介

Pytest是一个非常成熟的全功能的Python测试框架,主要有以下特点:

  1. 简单灵活,容易上手,文档丰富

  2. 支持参数化,可以细粒度地控制测试用例

  3. 支持简单的单元测试与复杂的功能测试,还可以用来做Selenium、Appium、Requests等UI、接口自动化测试

  4. 支持很多第三方插件,并且可以自定义扩展(Pytest插件下载地址)

  5. 支持测试用例的跳过与失败重试

  6. 可以很好的与CI工具结合,比如Jenkins

02 安装

pip install pytest

03 | 简单使用

  1. import pytest
  2. def test01():
  3.     print('第一条用例')
  4.     assert True
  5. def test02():
  6.     print("第二条用例")
  7.     assert False
  8. if __name__=="__main__":
  9.     # -s:显示用例中的输出
  10.     # -v:输出更详细的用例执行信息
  11.     # __file__:本文件
  12.     pytest.main(["-s""-v", __file__])

运行结果如下图:

04 | 初始化&结束

4.1 函数级别

每执行一个测试用例就执行一次初始化&结束方法

  1. import pytest
  2. class Test:
  3.     def setup(self):
  4.         print("初始化")
  5.     def teardown(self):
  6.         print("结束")
  7.     def test01(self):
  8.         print('第一条用例')
  9.         assert True
  10.     def test02(self):
  11.         print("第二条用例")
  12.         assert False
  13. if __name__=="__main__":
  14.     pytest.main(["-s",__file__])

执行结果图:

4.2 类级别

不管类中有多少条用例需要执行,仅仅只执行一次初始化&结束方法

  1. import pytest
  2. class Test:
  3.     def setup_class(self):
  4.         print("初始化")
  5.     def teardown_class(self):
  6.         print("结束")
  7.     def test01(self):
  8.         print('第一条用例')
  9.         assert True
  10.     def test02(self):
  11.         print("第二条用例")
  12.         assert False
  13. if __name__=="__main__":
  14.     pytest.main(["-s",__file__])

执行结果图:

05 | 常用插件

5.1 测试报告

安装测试报告插件

pip install pytest-html

在项目目录下创建 pytest.ini 配置文件,配置文件中新增测试报告存储路径。

  1. [pytest]
  2. # 在当前目录下创建report目录存放测试报告
  3. addopts = --html=./report/report.html    

执行测试,生成的测试报告如下图: 

5.2 失败重试

安装插件

pip install pytest-rerunfailures

全局重试:在配置文件中增加重试参数,控制所有用例失败后的重试及重试等待时间

  1. [pytest]
  2. addopts = --html=./report/report.html --reruns 3 --reruns-delay 2
  3. # --reruns n,n是一个整数,表示重试次数
  4. # --reruns-delay n,n是一个整数,表示重试等待时间,单位是s

测试报告中可以看出失败用例的重试情况

单个重试:在某个用例函数中增加装饰器,注意需要将 全局重试 的配置注释掉

  1. # reruns指定重试次数,reruns_delay指定重试间隔
  2. @pytest.mark.flaky(reruns=2, reruns_delay=1)  
  3.     def test02(self):
  4.         print("第二条用例")
  5.         assert False

测试报告中看重试情况:

5.3 多进程并发执行

pytest-xdist的出现就是为了让自动化测试用例可以分布式执行,从而节省自动化测试时间

安装插件

pip install pytest-xdist

多CPU并行执行

pytest -n 并行测试数量

5.4 多重断言

使用pytest进行断言判断的时候,为了用例的精准性,经常会多个方面进行断言,比如:

  • 断言1:断言响应的http的状态

  • 断言2:断言响应返回的code值

  • 断言3:断言响应返回的json中的data字段是否符合预期。

如果使用原生python的assert,就会遇到一个断言失败则全部失败的情况。比如说,断言1结果为Failed,那么断言2和断言3都不会被执行。我们希望断言2和断言3继续执行,这样我们能获取更多的断言结果来判断出接口哪里出了问题,能够更好地进行问题定位,这时候就可以使用pytest-assume插件来实现。

安装插件

pip install pytest-assume

使用案例

  1. import pytest
  2. def test_add2():
  3.     pytest.assume(1 + 4 == 5)
  4.     pytest.assume(1 + 3 == 3)
  5.     pytest.assume(2 + 5 == 7)
  6.     pytest.assume(2 + 5 == 9)
  7.     print("测试完成")
  8. if __name__=="__main__":
  9.     pytest.main(["-s""-v", __file__])

执行结果如下图,可以看出总共执行了四个断言,其中失败的断言有2个

5.5 美化执行结果

在我们进行自动化测试的时候,用例往往是成百上千,执行的时间是几十分钟或者是小时级别。有时,我们在调试那么多用例的时候,不知道执行到什么程度了,而pytest-sugar插件能很好解决我们的痛点。

安装pytest-sugar插件

pip install pytest-sugar

在命令行中执行用例文件,执行结果如下图,用例执行时会有进度条展示:

如果我的博客对你有帮助、如果你喜欢我的博客内容,请 “点赞” “评论” “收藏” 一键三连哦!


END配套学习资源分享

最后: 为了回馈铁杆粉丝们,我给大家整理了完整的软件测试视频学习教程,朋友们如果需要可以自行免费领取 【保证100%免费】

加入我的软件测试交流群:110685036免费获取~(同行大佬一起学术交流,每晚都有大佬直播分享技术知识点)

软件测试面试小程序

被百万人刷爆的软件测试题库!!!谁用谁知道!!!全网最全面试刷题小程序,手机就可以刷题,地铁上公交上,卷起来!

涵盖以下这些面试题板块:

1、软件测试基础理论 ,2、web,app,接口功能测试 ,3、网络 ,4、数据库 ,5、linux

6、web,app,接口自动化 ,7、性能测试 ,8、编程基础,9、hr面试题 ,10、开放性测试题,11、安全测试,12、计算机基础

获取方式 :

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/649534
推荐阅读
相关标签
  

闽ICP备14008679号