为什么要使用csv文件格式
- 问题:
- 参数化的测试数据存在于py文件里,不利于维护。
- 方案:
- 利用外部文件存储测试数据。
- 文件格式选择csv的原因:
- csv格式较为通用、简单、方便读取。
什么是csv文件
- csv文件:
- 逗号分隔值(Comma-Separated Values,CSV,有时也称为字符分隔值,因为分隔字符也可以不是逗号),其文件以纯文本形式存储表格数据(数字和文本)。
- CSV是一种通用的、相对简单的文件格式。
csv文件规则
- 开头是不留空,以行为单位。
- 可含或不含列名,含列名则居文件第一行。
- 一行数据不跨行,无空行。
- 以半角逗号(即,)作分隔符,列为空也要表达其存在。
- 列内容如存在半角引号(即"),替换成半角双引号("")转义,即用半角引号(即"")将该字段值包含起来。
准备csv数据文件
- 新建Directory:testdata
- 新建文本文档,输入csv格式的数据,另存为UTF-8编码的csv格式文件。
添加赛区csv文件
- 测试用例_AISE_后台_双创_基础设置_赛区管理_添加赛区.csv
python内置csv模块
- csv模块中的函数:reader(csvfile, dialect='excel', **fmtparams)
- 参数:
- csvfile,必须是支持迭代(Iterator)的对象,可以是文件(file)对象或者列表(list)对象。
- dialect,编码风格,默认为excel的风格,也就是用逗号(,)分隔。
- fmtparam,格式化参数,用来覆盖之前dialect对象指定的编码风格。
- 返回值:
- reader()返回一个读取器对象,它将迭代给定csv文件中的行。
准备读取csv工具
- utils包:read_csv.py
路径管理
- 新建common包
- pathmanager.py
- pathmanager.py
读取测试数据
- common包
- readdata.py
- readdata.py
测试脚本
- test_后台_双创_基础设置_赛区管理_添加赛区_case_v6.py
from common.readdata import rd
……
@pytest.mark.parametrize("division_name,message",rd.get_data("测试用例_AISE_后台_双创_基础设置_赛区管理_添加赛区.csv"))
def test_add_division(self,to_division_manager,division_name,message):
……
运行调试脚本
- 结果:
C:\Python\Python39\python.exe D:/PycharmProjects/aiseProject2/testcasecode/test_后台_双创_基础设置_赛区管理_添加赛区_case_v6.py
============== test session starts collected 10 items==========
test_后台_双创_基础设置_赛区管理_添加赛区_case_v6.py ..........
=============== 10 passed in 638.49s (0:10:38) ============
Process finished with exit code 0