pytest参数化实现DDT:读取CSV数据
Posted 永远不要矫情
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了pytest参数化实现DDT:读取CSV数据相关的知识,希望对你有一定的参考价值。
1.DDT思想
DDT(Data-Drive test):将测试数据提取出来,与逻辑分离,通过参数传递不同的测试数据来驱动用例运行。pytest中的pytest.mark.parametrize()便可实现参数化。
2.csv文件
csv:逗号分隔的文本文件,其文件以纯文本形式存储表格数据。当然分隔符也不一定是逗号,最常见的是逗号或制表符。例如:一个命名为test.csv的文件中的数据如下所示:
a,b,c
1,2,3
3,4,5
3.读取csv数据,实现DDT
创建test_csv.py,代码如下:
import pytest
import csv
def get_data():
with open('test.csv') as f:
lst = csv.reader(f)
my_data = []
for row in lst:
print(row)
my_data.extend(row)
print(my_data)
return my_data
@pytest.mark.parametrize('name',get_data())
def test01(name):
print(name)
if __name__ == '__main__':
#get_data()
pytest.main(['-sv', 'test_csv.py'])
读取csv文件需要导入csv模块。查看reader方法可知:
csv.reader(f)返回一个csv_reader对象,再通过for循环去遍历,每次返回一行。
csv_reader = reader(iterable [, dialect='excel']
[optional keyword args])
for row in csv_reader:
process(row)
我们在与test_csv.py同目录下创建一个test.csv,数据如下:
collecting ... ['a', 'b', 'c']
['1', '2', '3']
['3', '4', '5']
['a', 'b', 'c', '1', '2', '3', '3', '4', '5']
collected 9 items
test_csv.py::test01[a] a
PASSED
test_csv.py::test01[b] b
PASSED
test_csv.py::test01[c] c
PASSED
test_csv.py::test01[1] 1
PASSED
test_csv.py::test01[2] 2
PASSED
test_csv.py::test01[30] 3
PASSED
test_csv.py::test01[31] 3
PASSED
test_csv.py::test01[4] 4
PASSED
test_csv.py::test01[5] 5
PASSED
以上是关于pytest参数化实现DDT:读取CSV数据的主要内容,如果未能解决你的问题,请参考以下文章
pytest学习和使用12-Unittest和Pytest参数化详解