我们有一个除了Java代码之外还运行一些bash脚本的系统.由于我们正在尝试测试可能会破坏的所有内容,并且这些bash脚本可能会中断,我们希望对它们进行测试.
问题是很难测试bash脚本.
有没有办法或最佳实践来测试bash脚本?或者我们应该退出使用bash脚本并寻找可测试的替代解决方案?
你能告诉我如何读取Python包中的文件?
我加载的包有许多我想从程序中加载的模板(用作字符串的文本文件).但是如何指定此类文件的路径?
想象一下,我想从以下位置读取文件:
package\templates\temp_file
Run Code Online (Sandbox Code Playgroud)
某种路径操纵?包基路径跟踪?
我有这样的目录结构
projectfolder/fold1/fold2/fold3/script.py
Run Code Online (Sandbox Code Playgroud)
现在我给script.py一个路径作为文件的命令行参数
fold1/fold_temp/myfile.txt
Run Code Online (Sandbox Code Playgroud)
所以基本上我希望能够以这种方式提供路径
../../fold_temp/myfile.txt
>>python somepath/pythonfile.py -input ../../fold_temp/myfile.txt
Run Code Online (Sandbox Code Playgroud)
这里的问题是我可能会获得完整路径或相对路径,因此我应该能够决定并基于此我应该能够创建绝对路径.
我已经掌握了与路径相关的功能.
参考问题给出了部分答案,但我不知道如何使用其中提供的功能构建完整路径.
目标: 当使用从各种python模块调用的公共实用程序函数时,访问/写入相同的临时文件.
背景: 我使用python Unittest模块来运行通过pySerial与仪器连接的自定义测试集.因为我使用的是unittest模块,所以我无法将所需的变量(例如要使用的串口)传递到unittest的测试用例中.为了解决这个问题,我想创建一个存储和返回pickle数据的模块.我遇到的问题是,当我从test_case_1()调用函数get_foo()时,它会尝试从基于test_case_1()的相对路径加载pickle数据,而不是包含get_foo()的实际模块.
值得注意的是,我已经考虑过使用全局变量,但是我希望从运行中保留一些数据.这意味着将关闭所有python模块,并且我想重新加载上一次执行时存储的数据.
我在SO问题:Python - 在使用代码库时如何引用资源的相对路径,我以为我在第一个答案中找到了解决方案.令我沮丧的是,这在Python 2.7(Debian)中对我不起作用
从不同模块调用时,是否有可靠的方法将路径返回到特定文件?
我已经成功构建了一个Docker容器并将我的应用程序文件复制到Dockerfile中的容器中。但是,我试图执行一个引用输入文件的Python脚本(该文件在Docker构建期间复制到了容器中)。我似乎无法弄清楚为什么我的脚本告诉我它无法找到输入文件。我在下面包括用于构建容器的Dockerfile,以及正在寻找其找不到的输入文件的Python脚本的相关部分。
Dockerfile:
FROM alpine:latest
RUN mkdir myapplication
COPY . /myapplication
RUN apk add --update \
python \
py2-pip && \
adduser -D aws
WORKDIR /home/aws
RUN mkdir aws && \
pip install --upgrade pip && \
pip install awscli && \
pip install -q --upgrade pip && \
pip install -q --upgrade setuptools && \
pip install -q -r /myapplication/requirements.txt
CMD ["python", "/myapplication/script.py", "/myapplication/inputfile.txt"]
Run Code Online (Sandbox Code Playgroud)
Python脚本的相关部分:
if len(sys.argv) >= 2:
sys.exit('ERROR: Received 2 or more arguments. Expected 1: Input file name') …Run Code Online (Sandbox Code Playgroud) 情况:我的 Python 脚本有一行代码将自身复制到另一个目录
shutil.copyfile(os.path.abspath(__file__), newPath)
Run Code Online (Sandbox Code Playgroud)
问题:脚本然后被编译成一个 EXE 并运行。给出的错误如下:
FileNotFoundError: No such file or Directory: "C:\Path\To\EXE\script.py"
Run Code Online (Sandbox Code Playgroud)
如您所见,EXE 正在寻找.py自己的版本(即未编译版本)
问题:是否还有另一个 Python 命令仍然可以让可执行文件找到自己而不是自己的.py版本?
附加信息:我将尝试仅替换.py为.exe并查看它是否有效——如果我更改可执行文件的名称,程序就会失败。
C:\ > script.exe
#Works as expected
C:\ > ren script.exe program.exe
C:\ > program.exe
FileNotFoundError: No such file or directory: "C:\script.py"
Run Code Online (Sandbox Code Playgroud) python ×5
path ×2
bash ×1
docker ×1
dockerfile ×1
executable ×1
file ×1
package ×1
pyinstaller ×1
python-3.x ×1
tdd ×1
testing ×1
unit-testing ×1