pytest数据驱动介绍

1、数据驱动概念(数据驱动依赖于参数化来实现)

通过测试数据来驱动测试用例的执行

1.1 数据驱动特点(了解)
  • 数据驱动本身不是一个工业级标准的概念,因此在不同的公司都会有不同的解释。

  • 可以把数据驱动理解为一种模式或者一种思想。

  • 数据驱动技术可以将用户把关注点放在对测试数据的构建和维护上,而不是直接维护脚本,可 以利用同样的过程对不同的数据输入进行测试。

  • 数据驱动的实现要依赖参数化的技术。

1.2 数据驱动方式
  • 直接定义在测试脚本中(简单直观,但代码和数据未实现真正的分离,不方便后期维护)

  • 从文件读取数据,如JSON、excel、xml、txt、yaml等格式文件

  • 从数据库中读取数据

  • 直接调用接口获取数据源

  • 本地封装一些生成数据的方法

1.3 json读取文件
一、定义列表模式的json文件:
import json

# 读取文数据
def get_case_data():
    with open("case_data/login_case_data.json", encoding='utf-8') as f:
        case_data = json.load(f)
        print(case_data)


# 返回的是列表,但是列表里面还是列表 这种也是正确的
get_case_data() # [['13266666666', '123456'], ['13299999999', '123321']]
 二、定义列表模式的json文件:

 返回的是列表,列表中是一个字典类型的数据

import json


def get_case_data():
    with open("case_data/login_case_data.json", encoding='utf-8') as f:
        case_data = json.load(f)
        print(case_data)


get_case_data() 
# 返回的是列表,列表中是一个字典数据 {'username': '张三', 'password': '123456', 'phone': '13266666666'} 
# [{'username': '张三', 'password': '123456', 'phone': '13266666666'}, {'username': '李四', 'password': '123321', 'phone': '13299999999'}]

三、定义字典模式的json文件

 遍历得到:

import json


def get_case_data(filename):
    with open(filename, encoding='utf-8') as f:
        case_data = json.load(f)
    list_case_data = []
    for case in case_data.values():
        list_case_data.append(tuple(case.values()))
    return list_case_data


result = get_case_data("case_data/login_case_data.json")

for x in result:
    print(x)
    # ('张三', '123456', '13266666666', '账号不存在')
    # ('李四', '123321', '13299999999', '密码错误')
    # ('', '123321', '13299999999', '用户名不能为空')


 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值