gpt4 book ai didi

python - 如何模拟一个csv文件

转载 作者:太空狗 更新时间:2023-10-29 21:36:08 26 4
gpt4 key购买 nike

我有一个 csv 解析器模块,它解析非常特定类型的 .csv 文件并从中提取字段。现在为了测试这个模块,我正在编写一些单元测试。传统上,为了测试模块,我会创建一个格式相同但条目有限的示例 csv 文件,然后将此文件传递给模块并检查输出。显然这不是很好,因为对测试文件本身有依赖性。

解决这个问题的正确方法是什么?我已经阅读了有关 mock 模块以及它如何模拟事物的信息。但我不知道如何模拟特定文件。

最佳答案

您没有提供任何测试数据,所以我希望我的随机示例能够很好地解决您的问题。简而言之:如果您不想在测试期间创建临时文件对象(这是一个合理的约束,imo),请使用 StringIOmock 模块有一个很大的进入障碍,所以除非你想要它更高级的 mock 功能,否则没有必要使用它。

from io import StringIO
from csv import reader # this should import your custom parser instead

in_mem_csv = StringIO("""\
col1,col2,col3
1,3,foo
2,5,bar
-1,7,baz""") # in python 2.7, put a 'u' before the test string
test_reader = reader(in_mem_csv, delimiter=',', quotechar='|')
for line in test_reader:
print(line)
# whatever you need to test to make sure the csv reader works correctly

输出:

['col1', 'col2', 'col3']
['1', '3', 'foo']
['2', '5', 'bar']
['-1', '7', 'baz']

替代字符串格式

我个人更喜欢用三重字符串来表示文件,普通字符串可能更适合您的情况。请参阅此示例,了解如何方便地换行而不更改字符串的值。

in_mem_csv = StringIO(
"col1,col2,col3\n"
"1,3,foo\n"
"2,5,bar\n"
"-1,7,baz\n"
)

关于python - 如何模拟一个csv文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47830223/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com