美文网首页
Pytest 折腾-断言篇

Pytest 折腾-断言篇

作者: skynothing | 来源:发表于2020-04-02 11:15 被阅读0次

    众所周知,pytest可以利用python自带的assert来进行断言。可是一旦发生Fail情况,整个执行会被终止;有时候,会希望虽然有个别Fail情况,仍然可以继续执行下去。

    这个时候就需要利用pytest的插件,在网上微微一搜,发现 pytest-assume 这个插件可以实现上述情况。
    pytest-assume 传送门

    于是,简单写点脚本,看看怎么用,啥也不用import上来就用,略有点懵

    pytest.assume(resp.status_code==201)
    pytest.assume(len(resp.json()['data'])>11)
    

    再来看看它对于Fail的报错提示情况

    tp = <class 'pytest_assume.plugin.FailedAssumption'>, value = None, tb = None
    
        def reraise(tp, value, tb=None):
            try:
                if value is None:
                    value = tp()
                if value.__traceback__ is not tb:
    >               raise value.with_traceback(tb)
    E               pytest_assume.plugin.FailedAssumption: 
    E               2 Failed Assumptions:
    E               
    E               test_demo.py:12: AssumptionFailure
    E               >>  pytest.assume(resp.status_code == 201)
    E               AssertionError: assert False
    E               
    E               test_demo.py:23: AssumptionFailure
    E               >>  pytest.assume(len(resp.json()['data']) > 11)
    E               AssertionError: assert False
    
    ..\lib\site-packages\six.py:702: FailedAssumption
    

    虽然达到目的了,也指出了报错的位置以及语句,很有pytest风范,但是更想知道 Fail 时具体是什么值,这样更利于分析问题不是。

    不够理想,于是又到处去翻了,谷歌、Stack Overflow、GitHub、pytest官网等。
    功夫不负有心,总算找到了另外1个,也是个人比较满意的pytest-check传送门

    官宣已有详尽使用说明,依据上面的操作,进行对比,先看看使用

    import pytest_check as check
    
    check.equal(resp.status_code, 201)
    check.greater_equal(len(resp.json()['data']), 11)
    

    再来看看它对于Fail的报错提示情况

    FAILURE: 
    assert 200 == 201
      +200
      -201
    test_demo.py:20 in check_it() -> resp = func(*args, **kwargs)
    test_demo.py:11 in check_code() -> check.equal(resp.status_code, 201)
    FAILURE: 
    assert 7 >= 10
    test_demo.py:22 in check_it() -> check.greater_equal(len(resp.json()['data']), 10)
    ------------------------------------------------------------
    Failed Checks: 2
    

    Bingo!想要的都有了,这样在html报告里就可以查看了,当然可以加上自己的报错信息啥的就更完美了。

    相关文章

      网友评论

          本文标题:Pytest 折腾-断言篇

          本文链接:https://www.haomeiwen.com/subject/dbgtphtx.html