Python 3.x 脚本运行良好,但可以';我不能让pytest工作
尝试学习pytest时,以下脚本运行良好,但使用pytest时失败,因为它无法找到csv文件Python 3.x 脚本运行良好,但可以';我不能让pytest工作,python-3.x,unit-testing,csv,pytest,Python 3.x,Unit Testing,Csv,Pytest,尝试学习pytest时,以下脚本运行良好,但使用pytest时失败,因为它无法找到csv文件 import csv def load_data(file): mast_list = [] with open(file) as csvfile: data = csvfile.read() phone_masts = data.split('\n') columns = csv.reader(phone_masts, delimite
import csv
def load_data(file):
mast_list = []
with open(file) as csvfile:
data = csvfile.read()
phone_masts = data.split('\n')
columns = csv.reader(phone_masts, delimiter=',')
for row in columns:
if len(row) > 0:
mast_list.append(row)
return mast_list
我只是想让一些东西工作,所以试图测试函数是否返回列表类型,但它说没有找到csv文件。我肯定还有很多其他问题,但我正试图一次解决一点。以下是测试:
import pytest
import mobile_phone_data
def test_column_count():
file = 'Mobile Phone Masts.csv'
assert load_list() == type(list)
为什么脚本本身可以工作,但测试失败,因为它找不到csv文件?实际上,您会遇到一个“未找到文件”错误,这有点令人惊讶:您使用一个名称创建了一个函数,然后尝试测试另一个函数,这是一个错误 我调用您的第一个清单
foo.py
,并修改您的测试脚本如下:
测试_foo.py
from foo import load_data
def test_column_count():
file = 'spam.csv'
assert isinstance(load_data(file), list)
还有一个文件名为spam.csv
,这三个文件都在同一个文件夹中pytest
运行此测试并通过
代码中的其他问题:
- 您的
导入会做一些不必要的事情-您不必以艰难的方式拆分换行符,使用reader参数instaedcsv
应用于类型检查isinstance
- 您可能正在为单元测试创建临时文件并将其销毁
- 最初的函数
可以分为两部分:一部分读取文件,另一部分解析文件内容,这最终会使测试更容易李>load_data()
os.path.exists('Mobile Phone Masts.csv')
会说什么?谢谢。是的,你是对的,我终于发现了,这个文件叫做mobile_phone_data,第一个函数叫做load_data。感谢您对其他问题的意见,事实上,这些观点是您评论中的黄金。很高兴您喜欢单元测试工作,以防您深入挖掘,您可能希望查看下面的注释和一些相关链接:欢迎您在存储库中为上面的链接提出问题/执行拉取请求-关于单元测试,显然还有更多的问题要讨论。