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参数化实现数据驱动。

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

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

  • 相关阅读:
    基于vue的可视化编辑器
    IOS系统兼容input keyup事件
    js滚动事件实现滚动触底加载
    移动端 input 输入框实现自带键盘“搜索“功能并修改X
    clipboard.js兼容ios
    js实现点击复制网页内容(基于clipboard.js)
    js实现点击复制网页内容(基于execCommand)
    knn 数字识别
    knn 算法 k个相近邻居
    sklearn 线性回归
  • 原文地址:https://www.cnblogs.com/shuchang1001/p/13492283.html
Copyright © 2011-2022 走看看