2013-03-22 34 views
1

在我的试用测试用例中,我想从源代码树运行脚本。试用更改工作目录,所以简单的相对路径不起作用。实际上,Trial的临时目录位于源代码树内部,但假设情况似乎并不理想。即,我可以这样做:如何在Twisted试验测试中访问源代码树?

def source_file(p): 
    return os.path.join('..', p) 

有没有更好的方法?

+0

有关您的文件夹strucutre和试用命令行参数的更多细节将有所帮助。你的代码是在一个包中,还是只使用模块? – 2013-03-23 08:55:27

+0

此存储库中有多个软件包。我在整个软件包和单个测试模块上运行试用。 – daf 2013-03-23 11:34:46

回答

2

如果你想找到旁边的测试文件并运行它作为一个脚本,你可以这样做:

from twisted.python.modules import getModule 
script = getModule(__name__).filePath.path 
# ... 
reactor.spawnProcess(..., script, ...) 

你也可以用它来支持存储在一个zip文件的代码,尽管用Python调用它变得更加困难。你有没有考虑过使用python -m

+0

该脚本不是Python脚本。人们也可以想象想要获取源目录中文件中包含的一些测试数据的路径。 – daf 2013-03-23 14:06:16

+0

无论如何,如果我对有问题的软件包进行试用,或者如果我使用来自软件包外部的测试文件名进行调用,那么您的建议就会奏效。如果我从包子目录中调用试用版,我会在路径导入器缓存(PEP 302违例 - 检查您的本地配置)中得到一个“UserWarning:test”(对于模块test_chunkpost)。“但我可以忍受这一点。 – daf 2013-03-23 14:12:10

+0

是的,这意味着你的Python解释器对它自己的导入路径有一些不一致的看法; 'sys.path'上有一个条目,指向另一个条目的某处。不要那样做:)。 – Glyph 2013-03-24 03:08:27