以下是我的目录结构
data
|__data.csv
core
|__module.py
unittests
|__core
|__module_test.py
module.py 有 2 个函数,read_file()读取一个文件,add(a, b)返回 2 个给定数字的和。
module.py中,有2个函数,分别是read_file(),读取一个文件和add(a,b),返回2个给定数之和。
import pandas
def readfile(file_path, file_name):
df = pandas.read_csv(r"" +file_path + file_name + ".csv")
return df
def add(a, b):
return a + b
orig_df = readfile("..\data\\", "data.csv")
# do other things
module_test.py, 有一个测试方法,用于add
模块_test.py。
import unittest
import core.module as module
class MyTestCase(unittest.TestCase):
def test_add(self):
x = module.add(1, 2)
self.assertEqual(2, x)
if __name__ == '__main__':
unittest.main()
但是,当我运行测试时,我在回溯中看到read_file()函数中的代码正在执行,但失败了,因为它找不到数据文件。
Traceback (most recent call last):
File "C:\Program Files\JetBrains\PyCharm Edu 2019.3.1\plugins\python-ce\helpers\pycharm\_jb_unittest_runner.py", line 35, in <module>
main(argv=args, module=None, testRunner=unittestpy.TeamcityTestRunner, buffer=not JB_DISABLE_BUFFERING)
File "C:\Users\bhats\Anaconda3\lib\unittest\main.py", line 100, in __init__
self.parseArgs(argv)
File "C:\Users\bhats\Anaconda3\lib\unittest\main.py", line 147, in parseArgs
self.createTests()
File "C:\Users\bhats\Anaconda3\lib\unittest\main.py", line 159, in createTests
self.module)
File "C:\Users\bhats\Anaconda3\lib\unittest\loader.py", line 220, in loadTestsFromNames
suites = [self.loadTestsFromName(name, module) for name in names]
File "C:\Users\bhats\Anaconda3\lib\unittest\loader.py", line 220, in <listcomp>
suites = [self.loadTestsFromName(name, module) for name in names]
File "C:\Users\bhats\Anaconda3\lib\unittest\loader.py", line 154, in loadTestsFromName
module = __import__(module_name)
File "C:\Users\bhats\PycharmProjects\alpha-hunts\unittests\core\module_test.py", line 2, in <module>
import core.module as module
File "C:\Users\bhats\PycharmProjects\alpha-hunts\core\module.py", line 10, in <module>
orig_df = readfile("..\data\\", "data.csv")
File "C:\Users\bhats\PycharmProjects\alpha-hunts\core\module.py", line 4, in readfile
df = pandas.read_csv(r"" +file_path + file_name + ".csv")
File "C:\Users\bhats\Anaconda3\lib\site-packages\pandas\io\parsers.py", line 685, in parser_f
return _read(filepath_or_buffer, kwds)
File "C:\Users\bhats\Anaconda3\lib\site-packages\pandas\io\parsers.py", line 457, in _read
parser = TextFileReader(fp_or_buf, **kwds)
File "C:\Users\bhats\Anaconda3\lib\site-packages\pandas\io\parsers.py", line 895, in __init__
self._make_engine(self.engine)
File "C:\Users\bhats\Anaconda3\lib\site-packages\pandas\io\parsers.py", line 1135, in _make_engine
self._engine = CParserWrapper(self.f, **self.options)
File "C:\Users\bhats\Anaconda3\lib\site-packages\pandas\io\parsers.py", line 1917, in __init__
self._reader = parsers.TextReader(src, **kwds)
File "pandas\_libs\parsers.pyx", line 382, in pandas._libs.parsers.TextReader.__cinit__
File "pandas\_libs\parsers.pyx", line 689, in pandas._libs.parsers.TextReader._setup_parser_source
FileNotFoundError: [Errno 2] File b'..\\data\\data.csv.csv' does not exist: b'..\\data\\data.csv.csv'
为什么会出现这种情况?如果我单独导入函数,就不会发生这种情况,但是,我注意到了。谁能解释一下为什么会发生这种情况?