unittest是python自带的单元测试框架,它封装好了一些校验返回的结果方法和一些用例执行前的初始化操作,使得单元测试易于开展,因为它的易用性,很多同学也拿它来做功能测试和接口测试,只需简单开发一些功能(报告,初始化webdriver,或者http请求方法)便可实现。

但自动化测试中我们常常需要根据不同需求挑选部分测试用例运行,并且我们希望用例克服环境不稳定的局限,即运行失败后自动重新运行一次,如果成功就认为是环境问题导致第一次失败,还有我们经常希望测试用例可以并发执行等等,这些unittest都做不到或者需要大量二次开发才能做到,那么有没有更加强大的框架可以替代unittests呢?

pytest是python里的一个强大框架,它可以用来做单元测试,你也可以用来做功能,接口自动化测试。而且它比unittest支持的功能更多更全面。但是pytest在Getstarted里给出的实例却很简单,很多同学错以为它只是跟unittest一样是个单元测试框架罢了,如果你查询中文互联网,你也只能找到寥寥数篇大致一样的用法,可以说pytest的精髓使用,没有被大家挖掘出来,如此强大的框架不应该被埋没,今天我就带领大家深入pytest使用,共同领略pytest的强大。

1.安装pytest单元测试框架

2.检查Pytest安装版本 使用的命令是:pip show pytest

也可以使用 pytest -version 来查看

先来看一下第一个例子.新建一个python文件,collect.py 代码如下:

def func(x):
return x+
def test_answer():
assert func() ==
test_answer()

运行结果如下:

Traceback (most recent call last):
File "E:/untitled1/collect.py", line , in <module>
test_answer()
File "E:/untitled1/collect.py", line , in test_answer
assert func() ==
AssertionError

当然,也可以进入到collect.py所在文件中,使用pytest命令来执行:

E:\untitled1>pytest collect.py
============================= test session starts =============================
platform win32 -- Python 3.5., pytest-5.0., py-1.8., pluggy-0.12.
rootdir: E:\untitled1
collected items / errors =================================== ERRORS ====================================
_________________________ ERROR collecting collect.py _________________________
collect.py:: in <module>
test_answer()
collect.py:: in test_answer
assert func() ==
E assert ==
E + where = func()
!!!!!!!!!!!!!!!!!!! Interrupted: errors during collection !!!!!!!!!!!!!!!!!!!
=========================== error in 0.13 seconds =========================== E:\untitled1>

需要说明的是:pytest运行规则是自动查找python文件中以 test 开头的函数并执行。继续定义一个类。把多个函数封装到类中。如下:

class TestClass():
def test_one(self):
x = 'hello'
assert 'h' in x def test_two(self):
x = 'hello'
assert hasattr(x, 'check')

使用cmd命令来运行testclass测试类,继续执行collect.py文件:

E:\untitled1>pytest -q  collect.py
.F [%]
================================== FAILURES ===================================
_____________________________ TestClass.test_two ______________________________ self = <collect.TestClass object at 0x0000000003679DD8> def test_two(self):
x = 'hello'
> assert hasattr(x, 'check')
E AssertionError: assert False
E + where False = hasattr('hello', 'check') collect.py:: AssertionError
failed, passed in 0.07 seconds

(-q表示的是显示简单的测试结果)由测试结果可知,第一个用例是通过的,第二个是失败啊的。测试结果可以很清楚的查看报错原因!

Pytest运行规则:

1. 测试文件必须以test开头或者_test结尾。
2. 测试类必须是以test开头,且不能有init初始化方法
3. 测试函数必须是以test开头
4. 测试断言必须是assert方法

最新文章

  1. 用css3做一个正方体
  2. 积累一下SQL
  3. 关于lwip移植到ucsos-ii平台的遇到的问题(一)
  4. ios 下创建,删除文件夹的方法
  5. 各大IT公司校园招聘程序猿笔试、面试题集锦
  6. MySQL基础学习(一) 命令行命令
  7. python对象数据的读写权限
  8. 点击每一个button,弹出相应的索引号
  9. 【Linux工具】svn命令行使用实例
  10. 简单三步为Azure安装 Visual Studio
  11. smali 语法之if语句
  12. 使用证书部署出现System.Security.Cryptography.CryptographicException 错误解决方案
  13. glup/grunt,browserify / webpack等的比较
  14. EDI数据导入的注意事项&常见异常处理
  15. SSH框架搭建笔记
  16. requireJs,AMD,CMD
  17. CQOI2009叶子的染色
  18. word公式的使用
  19. gitlab安装与配置(Centos6.8)
  20. The partial charge density (1)

热门文章

  1. HTML常用全部代码--第二部分--JAVASCRIPT( 小伙伴要牢记&#128513;&#128513;&#128513;&#128513; )
  2. python代码规范 自动优化工具Black
  3. windows 10 下使用Navicat for oracle 数据库还原
  4. App版本更新接口的设计
  5. solidworks 学习 (三)
  6. sqler 集成 terraform v0.12 生成资源部署文件
  7. NetHack 备忘
  8. 2016级移动应用开发在线测试14-MediaPlayer
  9. 用jquery做一个带导航的名单列表
  10. Nessus简单使用