如何让TravisCI在测试期间识别和打开外部文件

2024-05-14 19:08:28 发布

您现在位置:Python中文网/ 问答频道 /正文

最后几个失败的构建在我的计算机上通过得很好,但是我很难让它们通过travis。问题来自于测试中的几行代码(以及其他类似的操作):https://github.com/garth5689/pyd2l/blob/master/test/pyd2l_test.py#L15-L20

在我的测试中,因为我有复杂的数据需要测试,所以我对这些数据进行了处理,以方便再次打开它,而不必每次测试时都多次访问我正在抓取的网站。(请随意讨论此测试策略的优点,但这不是问题的主题。)

class PyD2LMethodsTest(unittest.TestCase):

    def setUp(self):
        with open('./soup_1899_pickle.pkl', 'rb') as soup_pickle: 
            self.soup = pickle.load(soup_pickle)
        with open('./soup_1899_details_pickle.pkl', 'rb') as details_pickle: 
            self.test_details = pickle.load(details_pickle)
        with open('./test_Match_1899_pickle.pkl', 'rb') as test_Match_pickle: 
            self.test_match = pickle.load(test_Match_pickle)

这会导致我的travis构建出现以下一系列错误:

^{pr2}$

这是目录结构

pyd2l (repo)
|-- pyd2l
|   |-- (actual source files) 
|
+-- test
    |-- pyd2l_test.py   
    |-- soup_1899_details_pickle.pkl
    |-- soup_1899_pickle.pkl
    |-- soup_404_pickle.pkl
    +-- test_Match_1899_pickle.pkl

这些测试在我本地的机器上运行得很好。(我在测试期间将./添加到文件名中,看看是否可以让它自己工作。我想环境变量中可能有些东西需要处理,但我不确定。也有可能travis不允许酸洗/脱粘,但我找不到任何与之相关的东西。感谢任何帮助。在

Travis生成:https://travis-ci.org/garth5689/pyd2l/builds


Tags: httpstestselftravisasmatchwithload
2条回答

./是多余的;文件的路径已经是相对于当前工作目录的。在

问题是您希望它与您的测试目录相对,因此:

import os
# ...

with open(os.path.join(os.path.dirname(__file__), 'soup_1899_pickle.pkl'), 'rb') as soup_pickle:

我也遇到了同样的问题,在mac系统上运行测试可以很好地工作,但是当我试图在travisci或ubuntu上运行测试时,得到了一个FileNotFoundError。Travis CI使用的是ubuntu系统。假设你有一个文件夹结构:

project_folder:
|
+ -file1.py
+ -output_folder
    |
    + -output.txt

如果“file1.py”中有一个open()函数,该函数用于创建输出文件夹和输出.txt'文件,然后在ubuntu系统上运行测试,希望您的系统或github存储库中已经有了'output_folder'输出.txt'文件不必存在,但文件夹应该存在。因此,如果您已将文件夹添加到.gitignore,则可能需要将其删除。希望有帮助。在

相关问题 更多 >

    热门问题