pytest integration - how to properly import
我正在使用
1 2 3 4 5 6 7 8 9 10 11 12 | -myproject file.py file2.py -test/ input.txt input2.dat test_part.py -regress/ file2_old.py __init__.py -test/ test_file2_regression.py |
正确的方法是什么,让它在我的项目中的任何地方工作?我已经尝试过修改
更多信息:
我没有任何设置文件,我的
我已经退房了:
- 使用pytest正确导入
- 良好的集成实践
但这对我没什么帮助。
与来自项目中任何目录的
1 2 3 4 | import os from sys import path PATH = os.path.abspath(os.path.dirname(__file__)) path.append(os.path.join(PATH, os.pardir, os.pardir)) |
。
如果使用适当数量的
在寻找"最佳方法"的过程中,我遇到了同样的问题,也取得了类似的成功,因此我决定尽可能避免这种情况(从顶层运行实际的脚本),但为了回答您的问题,我目前的方法(例如从并行文件夹进行单元测试)是
1 2 3 | from sys import argv, path from os.path import dirname, join path.append(join(dirname(argv[0]),"..")) |
这使得解释器也可以搜索上面启动脚本的文件夹。另一种方法(而不是使用
编辑29.10.:替代
1 2 3 4 5 6 | from inspect import getsourcefile from sys import path from os.path import dirname, join this_file = getsourcefile(lambda _: None) path.append(join(dirname(this_file),"..")) |
号
我希望这至少可以用于所请求的目的,另请参见如何在python中获取当前执行文件的路径?.
最简单的——如果在你的情况下有效——当然是:
1 2 | from os.path import dirname, join path.append(join(dirname(__file__),"..")) |