zoukankan      html  css  js  c++  java
  • DDT与pytest.mark.parametrize参数化区别

    参数化表达式:                                                                                          ddt表达式

    @pytest.mark.parametrize(“参数名”, 列表数据)                        @ddt.ddt

    def(参数名):                                                                            class xxx(unittest.TestCase):       #一定要继承unitest.TestCase

             执行体                                                                                     @ddt.data(*LD.wrong_datas)     #列表要解包

             列表[“”] ……                                                                            def  test_login_failed_by_wrongData(self, case):   #参数接收列表中的一条数据 参数名随意

                                                                                                                         执行体

                                                                                                                         列表[“”] ……  

    一、DDT解析参数

    ddt 是第三方模块,需安装, pip install ddt

    DDT包含类的装饰器ddt和两个方法装饰器data(直接输入测试数据)

    通常情况下,data中的数据按照一个参数传递给测试用例,如果data中含有多个数据,以元组,列表,字典等数据,需要自行在脚本中对数据进行分解或者使用unpack分解数据。

    @data(a,b)

    那么a和b各运行一次用例

    @data([a,d],[c,d])

    如果没有@unpack,那么[a,b]当成一个参数传入用例运行

    如果有@unpack,那么[a,b]被分解开,按照用例中的两个参数传递

    1、测试参数如下:

    login_data=[{"para":{"mobilephone":"18777770000","pwd":"123456"},"method":"get","msg":"登录成功"},

    {"para": {"mobilephone":"18777770000","pwd":"000000"},"method":"get","msg":"用户名或密码错误"},

    {"para": {"mobilephone":"  ","pwd":"123456"},"method":"get","msg":"手机号不能为空"}]

    2、测试用例使用DDT解析参数:

    from ddt import ddt,data

    #装饰测试类

    @ddt

    class TestHttpRequest(unittest.TestCase):

    #装饰测试用例

    @data(*login_data)

    def test_login_1(self,data):

       res=HttpRequest(data['url'],data['param']).http_request(data['method'])

       print("测试结果:{0}".format(res.json()))

    执行3条用例

    标记函数参数化(测试用例方法前加测试数据):@pytest.mark.parametrize("a,b,expected", testdata)

    语法:

    ep1 传入单个参数

    @pytest.mark.parametrize('参数名',lists)

    ep2 传入两个参数

    ('参数1','参数2',[(参数1_data[0],参数2_data[0]),(参数1_data[1],参数2_data[1])]

    传三个或者更多也是这样传。list的每个元素都是一个元祖,元祖里的每个元素和按参数顺序一一对应。




    声明 欢迎转载,但请保留文章原始出处:) 博客园:https://www.cnblogs.com/chenxiaomeng/ 如出现转载未声明 将追究法律责任~谢谢合作
  • 相关阅读:
    tile38 复制配置
    The Guardian’s Migration from MongoDB to PostgreSQL on Amazon RDS
    tile38 一款开源的geo 数据库
    sqler sql 转rest api 的docker 镜像构建(续)使用源码编译
    sqler sql 转rest api javascript 试用
    sqler sql 转rest api redis 接口使用
    sqler sql 转rest api 的docker image
    sqler sql 转rest api 的工具试用
    apache geode 试用
    benthos v1 的一些新功能
  • 原文地址:https://www.cnblogs.com/chenxiaomeng/p/14841130.html
Copyright © 2011-2022 走看看