• pytest文档53-命令行实时输出错误信息(pytest-instafail)


    前言

    pytest 运行全部用例的时候,在控制台会先显示用例的运行结果(.或F), 用例全部运行完成后最后把报错信息全部一起抛出到控制台。
    这样我们每次都需要等用例运行结束,才知道为什么报错,不方便实时查看报错信息。
    pytest-instafail 插件可以在运行用例的时候,需实时查看用例报错内容,这样方便跟踪问题。

    --instafail

    执行全部用例,报错内容等用例运行完成才显示出来

    >pytest
    ============================= test session starts =============================
    
    collected 11 items
    
    test_s.py ..                                                             [ 18%]
    test_t.py ...                                                            [ 45%]
    test_x.py .F.F                                                           [ 81%]
    test_y.py ..                                                             [100%]
    
    ================================== FAILURES ===================================
    ___________________________________ test_02 ___________________________________
    
        def test_02():
            a = "hello"
            b = "hello world"
    >       assert a == b
    E       AssertionError: assert 'hello' == 'hello world'
    E         - hello
    E         + hello world
    
    test_x.py:12: AssertionError
    ___________________________________ test_04 ___________________________________
    
        def test_04():
            a = "hello"
            b = "hello world"
    >       assert a not in b
    E       AssertionError: assert 'hello' not in 'hello world'
    E         'hello' is contained here:
    E           hello world
    
    test_x.py:24: AssertionError
    ===================== 2 failed, 9 passed in 1.32 seconds ======================
    

    当用例很多的时候,不方便我们查看具体哪个报错对应哪条用例,加上--instafail参数,方便实时查看报错内容

    >pytest --instafail
    ============================= test session starts =============================
    
    collected 11 items
    
    test_s.py ..                                                             [ 18%]
    test_t.py ...                                                            [ 45%]
    test_x.py .F
    
    ___________________________________ test_02 ___________________________________
    
        def test_02():
            a = "hello"
            b = "hello world"
    >       assert a == b
    E       AssertionError: assert 'hello' == 'hello world'
    E         - hello
    E         + hello world
    
    test_x.py:12: AssertionError
    
    test_x.py .F
    
    ___________________________________ test_04 ___________________________________
    
        def test_04():
            a = "hello"
            b = "hello world"
    >       assert a not in b
    E       AssertionError: assert 'hello' not in 'hello world'
    E         'hello' is contained here:
    E           hello world
    
    test_x.py:24: AssertionError
    
    test_y.py ..                                                             [100%]
    
    ===================== 2 failed, 9 passed in 1.37 seconds ======================
    

    结合--tb=line参数,看起来更直观

    >pytest --instafail --tb=line
    ============================= test session starts =============================
    collected 11 items
    
    test_s.py ..                                                             [ 18%]
    test_t.py ...                                                            [ 45%]
    test_x.py .F
    
    D:	est_x.py:12: AssertionError: assert 'hello' == 'hello world'
    
    test_x.py .F
    
    D:	est_x.py:24: AssertionError: assert 'hello' not in 'hello world'
    
    test_y.py ..                                                             [100%]
    
    ===================== 2 failed, 9 passed in 1.30 seconds ======================
    
  • 相关阅读:
    Python笔记17(Django之路由系统)
    Python笔记16(Django介绍与安装)
    Python笔记16(Web框架本质)
    序列的区间操作
    并查集(入门)
    (补题 Uva 3027)Corporative Network
    (补题 cf 1167C)News Distribution
    (补题 CF 1013B 模拟)And
    (补题 CF 1234C)Pipes
    (补题 POJ 1679 次小生成树)The Unique MST
  • 原文地址:https://www.cnblogs.com/yoyoketang/p/13626256.html
Copyright © 2020-2023  润新知