美文网首页
零基础小白(十三) 串讲unittest/Pytest-数据驱动

零基础小白(十三) 串讲unittest/Pytest-数据驱动

作者: 巴鶴 | 来源:发表于2021-02-28 22:18 被阅读0次

    接口自动化测试: https://www.jianshu.com/nb/49125734

    引言

    数据驱动方式很多,有Excel维护数据,yaml维护数据,今天讲解unittest(ddt)与Pytest(pytest.mark.parametrize())维护数据差异。

    首先安装ddt pip install ddt

    安装ddt.png

    unittest数据驱动(ddt)

    ddt(data driven test)数据驱动测试, 由外部数据集合来驱动测试用例,核心思想:数据和测试代码分离,应用场景:一组数据来执行相同的操作。

    # -*- coding: utf-8 -*-
    """
    @Time : 2021/2/28 20:50
    @Auth : Yvon~早安阳光
    @File :testUnittest
    """
    import ddt,unittest
    
    testData = [{'username':'陈三','password':'dugu2036','expected':'登录成功'},
                {'username':'李四','password':'dugu6666','expected':'登录失败'},
                {'username':'张二','password':'dugu8888','expected':'登录失败'},
                {'username':'高大','password':'dugu8888','expected':'登录失败'},
                ]
    
    @ddt.ddt
    class Test(unittest.TestCase):
        def setUp(self):
            print('开始登录测试')
    
        def tearDown(self):
            print('结束登录测试')
    
        @ddt.data(*testData)
        def test_login(self,test_info):
            print(test_info)
    
    if __name__ == "__main__":
        unittest.main()
    
    unittest+ddt 运行结果.png

    Pytest数据驱动

    在 Unittest 中,我们讲过使用 ddt 库配合 unittest 实现数据驱动。在 Pytest 中并不需要额外的库,通过 pytest.mark.parametrize()即可实现参数化。

    # -*- coding: utf-8 -*-
    """
    @Time : 2021/2/28 21:40
    @Auth : Yvon~早安阳光
    @File :testpytest
    """
    import  pytest
    
    testData = [{'username':'陈三','password':'dugu2036','expected':'登录成功'},
                {'username':'李四','password':'dugu6666','expected':'登录失败'},
                {'username':'张二','password':'dugu8888','expected':'登录失败'},
                {'username':'高大','password':'dugu8888','expected':'登录失败'},
                ]
    
    def setup_function():
        print('开始登录测试')
    
    def tearDown_function():
        print('结束登录测试')
    
    @pytest.mark.parametrize('data',testData)
    def test_login(data):
        print(data)
    
    if __name__ == "__main__":
        pytest.main(['-s','testpytest.py'])
    
    Pytest运行结果.png

    相关文章

      网友评论

          本文标题:零基础小白(十三) 串讲unittest/Pytest-数据驱动

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