zoukankan      html  css  js  c++  java
  • Pytest-参数化和unittest-ddt的对比(两种数据驱动的对比)

    参数化表达式:                                                                                          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):   #参数接收列表中的一条数据 参数名随意

                                                                                                                         执行体

                                                                                                                         列表[“”] ……  

    pytest中的参数化的解释:

    参数名:用来接收列表中的每一组数据,并作为测试用例的参数,所以用例方法中用来接收每一组数据的参数名要和此处相同。

    Eg:

    @pytest.mark.parametrize('case', LD.wrong_datas)
    def test_login_failed_by_wrongData(self, case):
        self.lp.login(case["user"], case["passwd"])
        self.assertEqual(case["check"], self.lp.get_error_msg())
     
    备注:LD文件中wrong_datas = [
        {"user": "", "passwd": "python", "check": "请输入手机号"},
        {"user": "18684720553", "passwd": "", "check": "请输入密码"},
        {"user": "186847205", "passwd": "python", "check": "请输入正确的手机号"}
    ]

    常用场景:一般都是把数据放到字典中,多组数据一起放到列表中,再通过Pytest参数化实现数据驱动。

    了解下:参数名中可包括多个参数,可进一步把每组接收到的数据再次解包 一一赋值。(高级用法 但用得少 一般还是列表中数据格式为字典就可替代这种用法)

    骚操作 迪卡尔积-了解下即可 很少用到

  • 相关阅读:
    Android学习—Shape
    Android学习—Application的作用
    用户管理
    DPKG命令与软件安装、APT
    Linux学习笔记
    C如何使用内存
    九九乘法表.py
    超市买苹果.py
    第一个程序python.py
    JavaScript一些备忘知识
  • 原文地址:https://www.cnblogs.com/shuchang1001/p/13492283.html
Copyright © 2011-2022 走看看