pytest自动化测试数据驱动yaml/excel/csv/json

Jenny ·
更新时间:2024-11-13
· 30 次阅读

目录

数据驱动

1、pytest结合数据驱动-yaml

工程目录结构:

2、pytest结合数据驱动-excel

工程目录结构:

3、pyetst结合数据驱动-csv

读取csv数据:

工程目录结构:

4、pytest结合数据驱动-json

json结构:

查看json文件:

读取json文件:

工程目录结构:

数据驱动

数据的改变从而驱动自动化测试用例的执行,最终引起测试结果的改变。简单说就是参数化的应用。

测试驱动在自动化测试中的应用场景:

测试步骤的数据驱动;

测试数据的数据驱动;

配置的数据驱动;

1、pytest结合数据驱动-yaml

实现读yaml文件,先创建env.yml文件配置测试数据

工程目录结构:

data目录:存放yaml文件

- dev: 127.0.0.1 #dev: 127.0.0.2 #prod: 127.0.0.3

testcase目录:存放测试用例文件

import pytest import yaml class TestYaml: @pytest.mark.parametrize("env", yaml.safe_load(open("./env.yml"))) def test_yaml(self, env): if "test" in env: print("这是测试环境") # print(env) print("测试环境的ip是:", env["test"]) elif "dev" in env: print("这是开发文件") print("开发环境的ip是:", env["dev"]) # print(env)

结果示例:

2、pytest结合数据驱动-excel

常用的读取方式有:xlrd、xlwings、pandas、openpyxl

以读excel文件,实现A+B=C并断言为例~

工程目录结构:

data目录:存放excel数据文件

func目录:存放被测函数文件

def my_add(x, y): result = x + y return result

testcase目录:存放测试用例文件

import openpyxl import pytest from test_pytest.read_excel.func.operation import my_add def test_get_excel(): """ 解析excel数据 :return: [[1,1,2],[3,6,9],[100,200,300]] """ book = openpyxl.load_workbook('../data/param.xlsx') sheet = book.active cells = sheet["A1":"C3"] print(cells) values = [] for row in sheet: data = [] for cell in row: data.append(cell.value) values.append(data) print(values) return values class TestWithExcel: @pytest.mark.parametrize('x,y,expected', test_get_excel()) def test_add(self, x, y, expected): assert my_add(int(x), int(y)) == int(expected) 3、pyetst结合数据驱动-csv

csv:逗号文件,以逗号分隔的string文件

读取csv数据:

内置函数open()

内置模块csv

方法:csv.reader(iterable)

参数:iterable,文件或列表对象

返回:迭代器,遍历迭代器,每次会返回一行数据

以读csv文件,实现A+B=C并断言为例~

工程目录结构:

data目录:存放csv数据文件

func目录:存放被测函数文件

def my_add(x, y): result = x + y return result

testcase目录:存放测试用例文件

import csv import pytest from test_pytest.read_csv.func.operation import my_add def test_get_csv(): """ 解析csv文件 :return: """ with open('../data/params.csv') as file: raw = csv.reader(file) data = [] for line in raw: data.append(line) print(data) return data class TestWithCsv: @pytest.mark.parametrize('x,y,expected', test_get_csv()) def test_add(self, x, y, expected): assert my_add(int(x), int(y)) == int(expected) 4、pytest结合数据驱动-json

json:js对象,是一种轻量级的数据交换格式。

json结构:

对象{"key":value}

数组[value1,value2...]

查看json文件:

1.pycharm

2.txt记事本

读取json文件:

内置函数open()

内置库json

方法 json.loads() json.dumps()

以读json文件,实现A+B=C并断言为例~

工程目录结构:

data目录:存放json数据文件

func目录:存放被测函数文件

def my_add(x, y): result = x + y return result

testcase目录:存放测试用例文件

import json import pytest from test_pytest.read_json.func.operation import my_add def test_get_json(): """ 解析json数据 :return: [[1,1,2],[3,6,9],[100,200,300]] """ with open('../data/params.json', 'r') as file: data = json.loads(file.read()) print(list(data.values())) return list(data.values()) class TestWithJson: @pytest.mark.parametrize('x,y,expected', test_get_json()) def test_add(self, x, y, expected): assert my_add(int(x), int(y)) == int(expected)

以上就是pytest自动化测试数据驱动yaml/excel/csv/json的详细内容,更多关于pytest测试数据驱动yaml/excel/csv/json的资料请关注软件开发网其它相关文章!



yaml 测试数据 JSON 数据 pytest csv 测试

需要 登录 后方可回复, 如果你还没有账号请 注册新账号