python pytest测试框架实战_Pytest单元测试框架实战之-Pytest环境安装

本文介绍了Python的Pytest框架,对比unittest的局限性,阐述了Pytest的强大功能,包括自动化测试、测试选择、重试机制和并发执行。通过实例演示了如何安装Pytest,创建和运行测试用例,以及查看测试结果。Pytest不仅适用于单元测试,还可用于功能和接口自动化测试。
摘要由CSDN通过智能技术生成

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+1def test_answer():

assert func(3) == 5test_answer()

运行结果如下:

Traceback (most recent call last):

File"E:/untitled1/collect.py", line 90, in test_answer()

File"E:/untitled1/collect.py", line 89, intest_answer

assert func(3) == 5AssertionError

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

E:\untitled1>pytest collect.py============================= test session starts =============================platform win32-- Python 3.5.1, pytest-5.0.1, py-1.8.0, pluggy-0.12.0rootdir: E:\untitled1

collected0 items / 1errors=================================== ERRORS ====================================_________________________ ERROR collecting collect.py _________________________

collect.py:90: in test_answer()

collect.py:89: intest_answer

assert func(3) == 5E assert4 == 5E+ where 4 = func(3)!!!!!!!!!!!!!!!!!!! Interrupted: 1 errors during collection !!!!!!!!!!!!!!!!!!!

=========================== 1 error in 0.13 seconds ===========================E:\untitled1>

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

classTestClass():

def test_one(self):

x= 'hello'assert'h' inx

def test_two(self):

x= 'hello'assert hasattr(x,'check')

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

E:\untitled1>pytest -q collect.py

.F [100%]================================== FAILURES ===================================_____________________________ TestClass.test_two ______________________________

self= def test_two(self):

x= 'hello'

> assert hasattr(x, 'check')

E AssertionError: assert False

E+ where False = hasattr('hello', 'check')

collect.py:102: AssertionError1 failed, 1 passed in 0.07 seconds

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

Pytest运行规则:

1. 测试文件必须以test开头或者_test结尾。

2. 测试类必须是以test开头,且不能有init初始化方法

3. 测试函数必须是以test开头

4. 测试断言必须是assert方法

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值