zoukankan      html  css  js  c++  java
  • pytest和unittest中参数化如何做

    参数化应用场景,一个场景的用例会用到多条数据来进行验证,比如登录功能会用到正确的用户名、密码登录,错误的用户名、正确的密码,正确的用户名、错误的密码等等来进行测试,这时就可以用到框架中的参数化,来便捷的完成测试。

    参数化 就是数据驱动思想,即可以在一个测试用例中进行多组的数据测试,而且每一组数据都是分开的、独立的

    1.uniitest中参数化的用法

    1.1安装ddt模块,是python的一个库

    pip insatll ddt
    

      

     1.1引入ddt模块,是unittest的一个插件

    import ddt
    

      

    1.2在类前面加上一个装饰器@ddt.ddt,表示要使用ddt模块了,在要使用的方法上加上@ddt.data()

    @ddt.ddt   没有括号
    class TestDemo:
    
        @ddt.data(*测试数据)   #有括号,要加*,因为是不定长参数
    #将测试数据中的一组测试数据,赋值到data_info这个参数,相当于一个for循环,每次取一组数据给测试方法 def test_demo(self,data_info): pass

      

    2.pytest中参数化的用法

    在测试用例的前面加上:
    @pytest.mark.parametrize("参数名",列表数据)
    参数名:用来接收每一项数据,并作为测试用例的参数。
    列表数据:一组测试数据。

    @pytest.mark.parametrize("参数1,参数2",[(数据1,数据2),(数据1,数据2)])
    示例:
    @pytest.mark.parametrize("a,b,c",[(1,3,4),(10,35,45),(22.22,22.22,44.44)])
    def test_add(a,b,c):
    res = a + b
    assert res == c

        @pytest.mark.parametrize("fail",lds.fail)
        #(参数名称,数据)
        def test_error_msg_01(self,fail,init_driver):#(fail是参数名称,lds.fail是数据)
    
            lp=LoginPage(init_driver)
            lp.login_success(fail["username"],fail["passwd"])
            assert fail["check"]==lp.login_fail_01()
    

      

  • 相关阅读:
    随机图片
    单页网站
    最安全的聊天工具——Cryptocat
    一个游戏——小黑屋
    SAO Utils – SAO风格启动菜单
    对话框实现
    抖动文字
    Leetcode: 22. Generate Parentheses
    Leetcode: 21. Merge Two Sorted Lists
    Leetcode: 20. Valid Parentheses
  • 原文地址:https://www.cnblogs.com/hherbk/p/12712410.html
Copyright © 2011-2022 走看看