pytest 测试开发 —— 上手 pytest 实现自动化测试

2022-10-30 13:58:29

简介 / 前言

pytest是什么?

在这里插入图片描述

在这里插入图片描述
官方文档:https://docs.pytest.org/en/stable/
中文文档:https://learning-pytest.readthedocs.io/zh/latest/doc/intro/getting-started.html

pytest 是一个十分优秀的用于测试的模块,它是python的第三方测试框架,是基于unittest的扩展框架,比unittest更简洁,更高效。这篇文章主要概述我调研使用pytest的几个特殊的栗子。还有更多的内容我没有提到,我会在文章末尾给出一些优秀的blog供大家参考,当然还是要以官方文档为准。😄

使用步骤

一、运行 pytest 测试 demo

项目目录
在这里插入图片描述
在test_01.py, test_02.py, test_03.py中都存入相同的数据。

deftest_01():print("here is test_01")assert1==1deftest_02():print("here is test_02")assert2==2deftest_03():print("here is test_03")assert3!=3

执行pytest tests/ 运行测试脚本

在这里插入图片描述

二、如何在 pytest 运行的时候输出 print 信息,以及如何输出 Log 信息

输出 print 信息
上个模块我们介绍了,test_01.py test_02.py test_03.py 都保存了关于print 的内容。
我们是需要 将pytest tests/ 替换成pytest -s tests/ 即可,其中的-s 参数帮助我们达到了目标

在这里插入图片描述

三、返回优雅的 report 报告

安装pytest-html模块 – 当测试结束之后,他可以生成一个可视化的 report html。

pipinstall pytest-html

根据上述的例子,添加以下的内容即可实现功能。

pytest -s --html=report.html --self-contained-html tests/

在这里插入图片描述

四、默认的执行顺序,如何控制执行顺序

pipinstall pytest_ordering

安装完依赖之后,在test func上添加以下内容即可实现。

@pytest.mark.run(order=n)

1,被@pytest.mark.last装饰的,永远最后执行。

2,被装饰的用例优先于未被装饰的用例执行。

3,被装饰的用例之间,执行顺序按照order值的大小执行,值越小越先执行。

例如
tests/test.py

@pytest.mark.run(order=1)deftest_01():print("here is test_01")assert1==1

@pytest.mark.run(order=3)deftest_02():print("here is test_02")assert2==2

@pytest.mark.run(order=2)deftest_03():print("here is test_03")assert3!=3

执行结果
在这里插入图片描述
可见,test03比test02先执行。

tips:@pytest.mark.run(order=n),可以“跨文件使用” – 以当前的Blog为例,当tests文件夹下有3个test.py文件,每个test.py文件又有三个test func,可以通过使用:
@pytest.mark.run(order=n)
来指定多个文件中的func的执行顺序。

五、pytest 多线程和多进程实践

以多个类文件为例,开启多线程之后他会按照设置好的顺序依次运行,当不同文件的函数运行顺序设置为相同时,会实现伪并行。

pytest-parallel 的功能比 pytest-xdist更加完善

pipinstall pytest-parallel
pipinstall pytest-xdist

1、pytest-parallel加了多线程处理后,最后执行时间是运行时间最长的线程的时间。

2、在windows下想用多进程的选pytst-xdist; 想用多线程的选pytest-parallel

and more 。。。

如果又更多关于 pytest 的分享,欢迎在评论区里分享哇。

总结

pytest是python中的一个优秀的测试模块。他方便又灵活。在实践过程中,我尝试将pytest和Jenkins结合,实现了自动化测试和报警。

关于作者

联系方式MTI5MDAxNzU1NkBxcS5jb20=

你也可以通过github |csdn |@新浪微博 关注我的动态

欢迎评论关注+点赞啊!
  • 作者:99Kies
  • 原文链接:https://huifeng.blog.csdn.net/article/details/108278910
    更新时间:2022-10-30 13:58:29