DDT传递数据文件

一、传递txt文件(单一参数)

import unittest
from ddt import *

def read_phohe():
    """
    读取phone.txt文件中的电话号码数据
    :return:返回一个手机号列表
    """
    li = []
    with open("phone.txt", "r", encoding="utf-8") as f:
        for line in f.readlines():
            li.append(line.strip("\n"))  # strip()用于移除字符串头尾指定的字符

    return li

@ddt
class TestCase(unittest.TestCase):

    @data(*read_phohe())
    def test_01(self, phone):
        print("手机号为", phone)

    # 测试是否能读取电话号码
    @unittest.skip
    def test_02(self):
        li = read_phohe()
        print(li)

if __name__ == '__main__':
    unittest.main(verbosity=2)

执行结果
在这里插入图片描述

当传的数据是通过变量的方式,如元组2、列表2,变量前需要加上*

二、传递txt文件(多个参数)

import unittest
from ddt import *

@ddt
class TestDemo1(unittest.TestCase):

    @unittest.skip
    def test_03(self):
        res = read_userdata()
        print(res)  # [['admin', '123456'], ['sniper', '123456'], ['root', '123456']]

    @data(*read_userdata())
    @unpack
    def test_04(self, username, password):
        print(f"账号为:{username},密码为:{password}")


if __name__ == '__main__':
    unittest.main(verbosity=2)

执行结果
在这里插入图片描述

三、传递Yaml文件(单一参数)

  1. 创建yaml文件
- 15912345678
- 17612345678
- 18512345678
from ddt import *
import unittest

@ddt
class TestRead(unittest.TestCase):

    @file_data("phone.yaml")
    def test_01(self, phone):
        print("手机号为:", phone)

if __name__ == '__main__':
    unittest.main(verbosity=2)

执行结果为
在这里插入图片描述

四、传递yaml文件(多个参数)

1、数据文件中的key和程序测试方法的入口参数必须同名(推荐使用这个方法定义数据

-
  username: admin
  password: 123456
-
  username: sniper
  password: 123456
-
  username: root
  password: 666666
import unittest
from ddt import *

@ddt
class TestCall(unittest.TestCase):

    # file_data在处理多个参数传递需求的时候,无法满足需求,就算加上unpack也不能自动解包
    # 在yaml数据文件中采用对象的定义方式来定义数据内容
    # 数据文件中的key和程序测试方法的入口参数必须同名
    @file_data("userdata.yaml")
    # @unpack
    def test_02(self, username, password):
        print("用户登录姓名和密码为:", username, password)


if __name__ == '__main__':
    unittest.main(verbosity=2)

执行结果
在这里插入图片描述

2.如果key和入口参数不一致

-
  name: admin
  pwd: 123456
-
  name: root
  pwd: 666666
import unittest
from ddt import *

@ddt
class TestCall(unittest.TestCase):
 
    # 如果key和入口参数不一致
    @file_data("userdata2.yaml")
    def test_03(self, **userdata):  # *传递列表类型可变参数;**传递字典类型可变参数
        username = userdata["name"]
        password = userdata["pwd"]
        print("测试用户登陆流程:", userdata, type(userdata))
        print(f"测试用户姓名为:{username},密码为:{password}")


if __name__ == '__main__':
    unittest.main(verbosity=2)

执行结果
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值