尝试学习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, 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文件?
答案 0 :(得分:1)
实际上有点令人惊讶的是你得到一个文件未找到错误:你在一个名字下创建一个函数并尝试测试一个不同的函数,这是一个错误开始。
我打电话给您的第一个商家信息foo.py
并修改您的测试脚本如下:
test_foo.py
from foo import load_data
def test_column_count():
file = 'spam.csv'
assert isinstance(load_data(file), list)
还有一个名为spam.csv
的文件,所有三个文件都在同一个文件夹中。 pytest
运行此测试并通过。
代码中的其他问题:
csv
导入做了不必要的事情 - 你不必艰难地拆分换行符,使用reader参数instaed isinstance
应该用于类型检查load_data()
可以分为两部分:一部分读取文件,另一部分解析其内容,最终使其更容易测试。