Python 3.x 脚本运行良好,但可以';我不能让pytest工作

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

尝试学习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文件?

实际上,您会遇到一个“未找到文件”错误,这有点令人惊讶:您使用一个名称创建了一个函数,然后尝试测试另一个函数,这是一个错误

我调用您的第一个清单
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
运行此测试并通过

代码中的其他问题:

  • 您的
    csv
    导入会做一些不必要的事情-您不必以艰难的方式拆分换行符,使用reader参数instaed
  • isinstance
    应用于类型检查
  • 您可能正在为单元测试创建临时文件并将其销毁
  • 最初的函数
    load_data()
    可以分为两部分:一部分读取文件,另一部分解析文件内容,这最终会使测试更容易
是否可以从您的测试模块访问“Mobile Phone Masts.csv”?例如,
os.path.exists('Mobile Phone Masts.csv')
会说什么?谢谢。是的,你是对的,我终于发现了,这个文件叫做mobile_phone_data,第一个函数叫做load_data。感谢您对其他问题的意见,事实上,这些观点是您评论中的黄金。很高兴您喜欢单元测试工作,以防您深入挖掘,您可能希望查看下面的注释和一些相关链接:欢迎您在存储库中为上面的链接提出问题/执行拉取请求-关于单元测试,显然还有更多的问题要讨论。