• Pytest单元测试框架-Pytest环境安装


    Pytest单元测试框架-Pytest环境安装

     

    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+1
    def test_answer():
        assert func(3) == 5
    test_answer()

    运行结果如下:

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

    当然,也可以进入到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.0
    rootdir: E:untitled1
    collected 0 items / 1 errors
    
    =================================== ERRORS ====================================
    _________________________ ERROR collecting collect.py _________________________
    collect.py:90: in <module>
        test_answer()
    collect.py:89: in test_answer
        assert func(3) == 5
    E   assert 4 == 5
    E    +  where 4 = func(3)
    !!!!!!!!!!!!!!!!!!! Interrupted: 1 errors during collection !!!!!!!!!!!!!!!!!!!
    =========================== 1 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                                                                       [100%]
    ================================== 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:102: AssertionError
    1 failed, 1 passed in 0.07 seconds
    复制代码

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

    Pytest运行规则:

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

    作者:丨Fighter.Lu丨 点滴记录,开源共享。帮助更多有需要的人解决问题!博主博客地址:http://www.cnblogs.com/fighter007/
  • 相关阅读:
    django 我的博客 (慕课网视频)笔记
    读 django 中文文档投票例子笔记
    django的安装和初步使用
    Debug模式自定义NSlog
    重写NSString的setter方法
    iOS 常用代码之 UICollectionView
    生成100个 "20180520" 这样的时间字符串 写入txt文件
    WRNavigationBar 使用记录
    关于iphone设置显示模式为标准模式和放大模式时的区别
    CGContextRef 使用小记
  • 原文地址:https://www.cnblogs.com/maxforb/p/11841479.html
Copyright © 2020-2023  润新知