zoukankan      html  css  js  c++  java
  • 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 ======================
    
  • 相关阅读:
    面试C#需要准备的一些基础
    学习jQuery(一),做的第一个可拖动列的Grid
    面试的两道SQL题
    SSIS ODBC方式连接mysql数据库的一个问题
    WIN7下A卡解决部分游戏(CS、CF等)无法全屏问题
    显示Deprecated: Assigning the return value of new by reference is deprecated in解决办法
    Eclipse 中文插件的安装
    安装NASM for Linux
    将Eclipse中文注释字体变大方法
    如何查看局域网内所有IP
  • 原文地址:https://www.cnblogs.com/yoyoketang/p/13626256.html
Copyright © 2011-2022 走看看