自动化测试中的数据驱动

  在自动化测试中,为了减少对脚本的维护,需要将数据和代码进行分离,通过这种分离将对自动化脚本的维护重心由代码转到对数据的维护,所以称之为数据驱动。数据驱动也是我们常说的参数化的一种形式。

接下来我们看一下如何进行数据驱动,整体思路:

1.编写数据存储文件

2.编写读取数据工具

3.使用参数引用

作实际操

步骤1:编写数据存储文件

这里的数据文件可以选择两种:json、csv文件

1.json文件

{
  "login_success": [
    {
      "username": "admin",
      "password": "123456",
      "expect": "办公"
    },
    {
      "username": "12345678001",
      "password": "123456",
      "expect": "办公"
    }
  ],
  "login_fail":[
  {
    "username": "18912345677",
    "password": "123456",
    "expect": "悟空CRM系统"
  }
],
  "custom": [
    {
      "customname": "test42205",
      "expect": "test42205"
    },
    {
      "customname": "test42306",
      "expect": "test42306"
    }
  ]
}

2.csv文件

18986026502,123456,忽略更新
18912345677,123456,忘记密码
18912345688,123456,忘记密码

步骤2:读取工具封装

1.读取json文件

def build_data(file_path,modename):
    # file_path=BASE_DIR+r'/data/login_data_success.json'
    my_list=[]
    with open(file_path,mode='r',encoding='utf-8') as f:
        content=json.load(f)
        if modename=='login_success':
            for dic in content['login_success']:
                my_tuple=(dic["username"],dic["password"],dic["expect"])
                my_list.append(my_tuple)
        elif modename == 'login_fail':
            for dic in content['login_fail']:
                my_tuple = (dic["username"], dic["password"], dic["expect"])
                my_list.append(my_tuple)
        else:
            print("没有匹配的数据")
    return my_list

2.读取csv文件

def build_data_csv(file_path):
    # file_path=BASE_DIR+r'/data/login_data_success.json'
    my_list=[]
    with open(file_path,mode='r',encoding='UTF-8') as f:
        reader=csv.reader(f)
        for row in reader:
            my_tuple=(row[0],row[1],row[2])
            my_list.append(my_tuple)
        # my_list=[row for row in reader]
        return my_list

步骤3:使用参数引用

1.引用json文件

    @parameterized.expand(build_data(file_path1,'login_success'))
    def test_login1(self,username,password,expect):
        my_base = PageLogin(self.browser)
        my_base.page_login(username,password)
        assert_text=my_base.assert_text_success()
        self.assertEqual(expect,assert_text)

2.引用csv文件

    @parameterized.expand(build_data_csv(file_path1))
    def test_login1(self,username,password,expect):
        my_base = PageLogin(self.browser)
        my_base.page_login(username,password)
        try:
            assert_text=my_base.assert_text_success()
            self.assertEqual(expect,assert_text)
        except Exception as e:
            print(e)
            assert_text=my_base.assert_text_fail()
            self.assertEqual(expect,assert_text)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值