zoukankan      html  css  js  c++  java
  • Pytest学习(五)

    常见的状态

    • passed:测试通过
    • failed:断言失败
    • error:代码编写上的错误
    • xfail:预期失败,加了 @pytest.mark.xfail()

    测试通过的栗子(passed)

    示例代码如下:

    # -*- coding: utf-8 -*-
    # @Time    : 2020/10/25 17:17
    # @Author  : longrong.lang
    # @FileName: test_pass.py
    # @Software: PyCharm
    # @Cnblogs :https://www.cnblogs.com/longronglang
    '''
    测试通过的例子
    '''
    import pytest
    
    
    @pytest.fixture()
    # 定义一个测试数据
    def data():
        return 1
    
    
    def test_pass(data):
        assert 1 == data
    
    
    if __name__ == '__main__':
        pytest.main(["-q", "test_pass.py"])
    
    

    输出结果:

    断言失败的栗子(failed)

    1、正常断言失败

    示例代码如下:

    # -*- coding: utf-8 -*-
    # @Time    : 2020/10/25 17:26
    # @Author  : longrong.lang
    # @FileName: test_failed.py
    # @Software: PyCharm
    # @Cnblogs :https://www.cnblogs.com/longronglang
    '''
    断言失败的栗子
    '''
    import pytest
    
    
    @pytest.fixture()
    def data():
        return 'python'
    
    
    def test_failed(data):
        assert 'test' in data
    
    
    if __name__ == '__main__':
        pytest.main(["-q", "test_failed.py"])
    
    

    输出结果:

    2、测试方法里主动抛出异常了

    示例代码如下:

    # -*- coding: utf-8 -*-
    # @Time    : 2020/10/25 17:26
    # @Author  : longrong.lang
    # @FileName: test_failedException.py
    # @Software: PyCharm
    # @Cnblogs :https://www.cnblogs.com/longronglang
    '''
    断言失败的栗子
    '''
    import pytest
    
    
    @pytest.fixture()
    def data():
        return 'python'
    
    
    def test_failed(data):
        # 这块随便抛出一个异常了
        raise IOError
        assert 'py' in data
    
    
    if __name__ == '__main__':
        pytest.main(["-q", "test_failedException.py"])
    
    

    输出结果:

    代码编写上的错误(error)

    1、fixture中有错

    示例代码如下:

    # -*- coding: utf-8 -*-
    # @Time    : 2020/10/25 17:34
    # @Author  : longrong.lang
    # @FileName: test_error.py
    # @Software: PyCharm
    # @Cnblogs :https://www.cnblogs.com/longronglang
    '''
    代码编写上的错误栗子
    '''
    import pytest
    
    
    @pytest.fixture()
    def data():
        str = 'python'
        assert 'test' in str
        return str
    
    
    def test_error(data):
        assert data == 'python'
    
    
    if __name__ == '__main__':
        pytest.main(["-q", "test_error.py"])
    
    

    输出结果:

    fixture里面断言失败,导致fixture标记的data会报错,使得data没有返回值;而test_error调用了错误的fixture,所以error表示代码写的有问题了

    2、参数不存在

    示例代码如下:

    # -*- coding: utf-8 -*-
    # @Time    : 2020/10/25 17:34
    # @Author  : longrong.lang
    # @FileName: test_errorNoParam.py
    # @Software: PyCharm
    # @Cnblogs :https://www.cnblogs.com/longronglang
    '''
    代码编写上的错误栗子
    '''
    import pytest
    
    
    def data():
        str = 'python'
        return str
    
    
    def test_error(data):
        assert data == 'python'
    
    
    if __name__ == '__main__':
        pytest.main(["-q", "test_errorNoParam.py"])
    
    

    输出结果:

    data参数并不存在,找不到自然就error了

    总结:

    • 测试用例的代码有异常,包括主动抛出异常或代码有异常,都算failed
    • 当测试用例调用的fixture有异常,或传入的参数有异常的时候,都算error
    • 如果一份测试报告中,error的测试用例数量越多,说明测试用例质量越差

    预期失败的栗子(xfail)

    这个和testng的异常测试差不多了,就是断言预期的异常,可以测试是否需要代码抛出异常或不抛出。
    示例代码如下:

    # -*- coding: utf-8 -*-
    # @Time    : 2020/10/25 17:51
    # @Author  : longrong.lang
    # @FileName: test_xfail.py
    # @Software: PyCharm
    # @Cnblogs :https://www.cnblogs.com/longronglang
    '''
    预期失败栗子
    '''
    import pytest
    
    # 断言装饰器
    @pytest.mark.xfail(raises=ZeroDivisionError)
    def test_xfail():
        var = 1 / 0
        print(var)
    
    

    输出结果:

    代码有异常,且和raised的异常类匹配,所以是xfail(算测试通过的一种,表示符合期望捕捉到的异常),并不算failed

    如果和raised的异常类不匹配,则是failed

    系列参考文章:

    https://www.cnblogs.com/poloyy/category/1690628.html

    优秀不够,你是否无可替代

    软件测试交流QQ群:721256703,期待你的加入!!

    欢迎关注我的微信公众号:软件测试君


  • 相关阅读:
    【原创】绝对居中
    MSSQL数据库各角色权限
    如何升级至 XHTML?
    XHTML 语法
    5.4 删除一个元素节点或者文本节点
    Ajax实现无刷新的获取数据并绑定到GridView,以及无刷新更新数据[转]
    鼠标滑过时显示图片内容隐藏和鼠标滑过图片隐藏内容显示的两种小方法
    纯CSS3魔方的制作
    201920201学期 20192415 《网络空间安全专业导论》XOR加密
    201920201学期 20192415 《网络空间安全专业导论》第四周学习总结
  • 原文地址:https://www.cnblogs.com/longronglang/p/13872652.html
Copyright © 2011-2022 走看看