在Python的编程语言中,单元测试框架主要是pytest,unittest,和nose,其中应用最广泛的是unittest和pytest测试框架,unittest测试框架是内置的模块,安装完Python的解释器后,就可以直接导入使用,但是使用它的时候必须是继承TestCase类,才可以调用里面的方法,但是缺陷也是很明显的,它只能应用于面向对象的编程方式,无法应用于函数式的编程方式,Python语言它的优势的是可以是面向对象的编程方式,也可以是函数式的编程方式。pytest就显得自由,它把每一个以test_开头或者是_test结尾的都看成是一个测试对象,同时它的断言是Python的原生断言assert,这样使用起来更加的自由,只要编写的不管是模块还是类,符合它的要求,都是可以执行的。但是前提是需要安装pytest,它是属于第三方的库,安装的命令为:

pip  install pytest

在这里先写一个函数的测试代码,来说明pytest的应用,创建f.py的模块,在里面编写以test开头的测试代码,然后在该目录下执行pytest,发现测试代码并没有执行,见如下截图:

为什么测试代码没有执行了?这是因为在pytest中,它会首先寻找以test_开头或者以_test结尾的测试模块,然后执行模块里面以test_开头或者是以_test结尾的测试代码,这里依据这个要去,编写测试模块,如下:

再次执行pytest,就会看到模块里面的测试代码都已执行,见如下的截图信息:

当然也查看详细的信息,使用到的命令为:pytest -v 就会显示出详细的执行信息,如下图所示:

在详细的信息中,会显示出执行了那个模块中的那个具体的测试用例,再完善下模块中的测试用例,执行多少个,在详细的信息中它都会显示出来,见完善后执行的截图信息,如下图所示:

在一个项目文件中,或者说是一个测试的包下面,会有很多的测试模块文件,但是并不是所有的测试模块文件需要执行,只是想执行某一个模块文件,那么就只需要在执行的时候指定这个文件就可以了,执行的命令为:pytest -v  test_xunit_002.py,见执行后的结果截图信息:

见如上的截图信息,就只显示了test_xunit_002.py模块的测试代码,并没有执行另外一个模块的测试用例。

下面继续看Pytest中对测试用例执行结果的显示,如果是正确的显示passwd,也会使用.来表示,如果是错误的,也就是执行失败的,使用F来表示,也就是FAILED,完善test_xunit_0002.py模块的代码,见源码:

见执行后正确的和错误的信息的表示,见如下的截图信息:

在执行结果中会显示出错误的详细信息,以及成功的个数和失败的个数。

在pytest框架中,如果没有指定目录,它默认是会搜索一个项目下所有可执行的测试模块以及测试模块里面的测试用例来进行的,并不在乎测试用例是在哪个package那个模块的,这样的一个过程成为“测试搜索”,只要符合它的规则的它都是会被执行的。在这里,增加几个包,在包里面增加几个测试模块,见目录结构的设计:

再次使用pytest -v来进行执行,来看“测试搜索”的过程,见执行的截图,如下图所示 :

依据如上的结果信息,pytest测试搜索的规则为:

1.测试文件最好是test开头或者是test为结尾

2.测试函数或者测试类方法应该当是test开头或者是test为结尾

3.测试类应当命名为Test

下来依据案例继续看执行单个测试用例的文件,主要分为这么几个场景,第一个场景是执行某一个模块下的某一个测试用例,第二个场景是执行某个模块下某一分类的测试用例,先来看第一个场景,指定模块下具体的测试用例,见执行的命令:

如果某一个测试用例名称是唯一的,或者说是某一些分类,那么就可以使用命令行的-k,以及--collect-ony,-k允许使用表达式指定希望运行的测试用例,或者多个前缀或者是后缀的测试用例名称相同,--collect-only主要的应用于筛选,见模块的源码:

当然也可以显示出执行的详细的信息:

-m是可以很快速到找到测试类别的分组,比如登录模块是一部分的测试用例,退出是一部分的测试用例,这里我们还是以开放平台为案例,也就是说在一个测试模块中 ,有很多的测试用例,但是只是想执行openapi的测试用例,见案例代码:

这里实现只是单纯的执行openapi的测试用例,其它的测试模块就不再执行了,执行的命令是:pytest -m openapi,见执行后的结果截图:

见执行的详细信息:

在实际的测试场景中,一般性的我们希望不管测试用例执行失败也好成功也好,都希望测试用例能够正常的执行,但是也有一种场景是执行的时候遇到测试用例执行失败,就立刻停止,这里会使用到的命令是-x,见案例代码:

我们希望测试用例执行失败,就立刻停止,执行的命令为:pytest -x

执行到第二个测试用例,由于断言失败,所以测试用例再没有继续执行。这是符合我们的预期结果的。当然也可以指定最大失败的次数,它的命令为:--maxfail=参数,参数也就是指的是最大的失败次数。继续执行,执行的命令为:pytest --mailfail=参数

上面指的是最大失败的次数是0,所以也就等于不管是否失败,都执行所有的测试用例。这个需求相对来说使用的还是比较少,一般的来说我们都还是希望所有的测试用例执行,到最后再说具体结果的事,失败的当然再具体定位和分析,然后得出比较客观的结论报告。--tb=no是关闭错误信息,--tb=short是输出assert错误的信息,--tb=line是一行输出所有的所有,具体依据如下的截图信息来看这三个的区别和它的应用场景,第一个场景是有错误,但是不显示错误的信息,执行的命令是:pytest --tb=no

第二个场景是有错误就只输出assert的这一行的信息,执行的命令为:pytest --tb=short

第三场景是显示错误信息,并且显示在一行的内容,执行的命令为:pytest --tb=line,如下图所示:

--lf命令值的是执行测试用例失败后,希望能够定位到该测试用例并且重新执行,它的好处是能够很快速的找到失败的测试用例见案例的源码:

中间的测试用例断言它是存在问题,但是我们希望能够很快速的定位到,执行的命令为:pytest --lf,见输出结果截图:

显示出第二个测试用例失败,很快速的定位到了,并且显示出了断言的失败信息。

--ff是执行完剩余的测试用例,是一个很奇怪的解释,是不是意味着执行终止了,然后由它负责执行完剩余的测试用例了,是否和-x命令冲突了,执行的命令为:pytest --ff

-v就是很简单了,打印出很详细的信息,-q与-v是相反的,就是打印出简单的信息,见执行的命令:

如上可以看到打印的信息确实很简单的,但是有个好处是失败的测试用例它还是显示出了很详细的信息的。这点我觉得特别的好。

--duration是统计出那些测试用例执行速度慢,这点在接口测试特别的好用,可以看到那个接口请求响应慢,默认是0,耗时从长到短依次排序显示,见案例的源码,同样的网络环境测试那个网站访问速度快。

执行的命令为:pytest --duration=0,见执行后的命令信息:

真的是没有对比就没有伤害,有了对比伤害也就出来了,百度的耗时是最长是,淘宝是耗时是最短的。结果是那么的让人不可思议的。

自动化测试pythontest_自动化测试教程-Pytest的基本应用相关推荐

  1. python 持续集成 教程_jenkins+python自动化测试持续集成教程

    一.首先我们安装Jenkins,我这里采用的是.msi应用程序,根据提示进行安装(傻瓜式),最后会打开默认的网页地址:http://localhost:8080 如果端口有冲突,可以去Jenkins的 ...

  2. python接口自动化测试书籍_蜗牛出版之《接口自动化测试开发实战教程》书籍详解!...

    各位老铁,大家好~ 上周,我们通过一篇分享,给大家详细介绍了蜗牛创想的出版业务. 还不了解的小伙伴请戳:除了培训和研发,我们还有一项90%的人都未曾关注到的业务! 本周开始,我们将对已经出版的< ...

  3. Web自动化测试简介及web自动化测试实战交教程

    一.认识web自动化测试 1.什么是自动化测试? 自动化测试的概念: 软件自动化测试就是通过测试工具或者其他手段,按照测试人员的预定计划对软件产品进行自动化测试,他是软件测试的一个重要组成部分,能够完 ...

  4. 软件测试 自动化测试 Web自动化测试01 selenium 定位元素方法 元素操作 自动化脚本开发

    文章目录 1 自动化测试概述 1.1 测试的目的 1.2 自动化测试的优点 1.3 自动化测试的缺点 1.4 自动化测试工具 1.5 自动化测试流程 2 selenium基础 2.1 selenium ...

  5. 怎么自学python自动化测试-学习自动化测试,如何学习Python语言?

    一.Python常用领域Python用于简单脚本编程,如编写2048小游戏或12306的自动抢票软件: Python用于系统编程,如开发系统应用: Python用于开发网络爬虫: 有资料奉上,可以看看 ...

  6. 【软件测试】什么样的项目适合做自动化测试?自动化测试有需要那些技术?

    少部分从事软件自动化测试,会接触底层服务端.API .Web.APP.H5 等等,对自动化有了解. 想做自动化,首先得了解一下自动化测试的一些常见问题. 也是面试时,必问的一些问题(这么简单的面试问题 ...

  7. 自动化测试、自动化测试框架和云测试相关论文列表

    论文列表 基于Android系统的自动化测试用例的实现和优化,彭洪超,南京邮电大学,2020; 智慧社区应用系统自动化测试设计与实现,贾秀秀,南京邮电大学,2020:导师:杨龙祥; Web和App软件 ...

  8. 自动化测试与自动化测试介入时机

    转自:http://blog.sina.com.cn/s/blog_6c9670bb0101sl97.html 先mark下,关注: 1.各类测试理论定义,相应工具 2.现在,在阿里不管是接口测试还是 ...

  9. 第三代api自动化测试框架使用教程(pytest+allure+sql+yaml)

    使用教程 一.配置 1.环境配置 2.框架配置 3.启动入口 二.用例编写 1.用例模板 2.参数依赖写法 2.函数(方法插件)写法 3.接口上传文件和表单参数 4.接口上传json参数 5.接口无数 ...

最新文章

  1. git的一些常用操作
  2. FastJSON 简介及其Map/JSON/String 互转(转载)
  3. CentOs MySQL数据目录迁移
  4. 转 php include
  5. 私人博客定制---服务器接口封装
  6. mysql运维命令_运维常用 MySQL 命令
  7. visual studio 判断dropdownlist选的是什么_测试:选一顶你觉得最漂亮的皇冠。测你长了张什么脸?我是发财脸...
  8. HDU4506 小明系列故事——师兄帮帮忙【水题】
  9. 社区OpenJDK代码构建平台投入使用
  10. Atitit  rgb yuv  hsv HSL 模式和 HSV(HSB) 图像色彩空间的区别
  11. 常见手机定位方式浅谈
  12. 计算机毕业设计django基于python智能在线考试阅卷系统(源码+系统+mysql数据库+Lw文档)
  13. linux系统的drm配置mipi,Linux 进阶 DRM等.....
  14. Aras innovator: 怎样把excel文件导入到Aras数据库
  15. 2010年度CSDN十大博客文章
  16. lenovo L480 进入bios_rx5700刷bios秒变rx5700xt!rx5700刷rx5700xt bios图文教程
  17. 刘德华郑秀文喜剧大片《魔幻厨房》DVD国语中字
  18. Java语言为excel添加水印,使用原生POI, (XSSFWorkbook, XSSFSheet), 真正背景图水印效果,非普通图片张贴
  19. python中split()函数讲解
  20. SecureCRT安装配置使用

热门文章

  1. 停止宗教战争,好吗?
  2. 战胜 Flash ,HTML5 还需要什么?
  3. 限制部分Postfix用户只能内部收发的例子(完整版)
  4. 去除(还原)git diff 时出现的 ^M
  5. ios 旋转加载gif_加载GIF动画方法 iOS
  6. druid mysql配置详解_druid配置详解
  7. java项目中怎么查看用的序列_如何在Java应用程序中使用序列化分类器对...
  8. mysql不可重复读和重复读_脏读、幻读、不可重复读的区别是什么
  9. python分析双十一销量
  10. vscode 运行html服务器运行_如何在vscode中调用浏览器运行html?