我有测试用 Python 编写的文件:test1.py test2.py... 在执行其中任何一个之前,我需要使用一个名为 initialize.py 的文件来初始化它们,该文件带有参数。
测试文件必须尽可能地轻巧且易于编写。
我想创建一个脚本:
- 接受输入参数
- 使用这些参数启动 initialize.py 文件
- 使用 initialize.py 创建的变量启动测试文件
我想了几个办法:
- 导入这两个文件:它不起作用,因为通过导入,您可以在主脚本上使用 return 参数,但不能提供输入参数
- 将两个文件转换为函数:initialize.py 不是问题,但正如我所说,我想让测试文件尽可能简单和轻便,所以如果我能避免它会更好。
- 完美的解决方案是简单地从初始化中“复制”代码并将其放在测试文件的开头(或相反)。可能会创建一个包含两个代码的临时文件,但我认为它不是很干净。
总结一下:就好像我有 100 个以相同的 25 行开头的文件,我想将这 25 行放在一个文件中并每次都导入它们。
另一种查看事物的方式是 3 个文件:
#File1.py
var1 = sys.argv(1)
#File2.py
var2 = var1+"second"
#File3.py
var3 = var1+var2+"third"
print var3
我想先启动 ./File1.py 并得到“first second thrid”
我成功了
#! /usr/bin/python
import sys
import subprocess
source_content = "#! /usr/bin/python\n"+"import sys\n"
sourcefile = "file2.py"
txt_file = open(sourcefile)
source_content += txt_file.read()
sourcefile = "file3.py"
txt_file = open(sourcefile)
source_content += txt_file.read()
destinationfile = "Copyfile2.py"
target = open (destinationfile, 'w')
target.write(source_content)
target.close()
chmodFile = "chmod 777 "+destinationfile
chmod = subprocess.Popen(chmodFile, shell=True)
chmod.wait()
arguments = str("./"+destinationfile+" ")
arguments += " ".join(map(str,sys.argv[1:len(sys.argv)]))
startTest = subprocess.Popen(arguments, shell=True)
startTest.wait()
但我不得不从 test2 中删除“#!/usr/bin/python”,并在这些相同的文件上测试并将 var1 重命名为 sys.arg[1]。而且我认为这不是一个很好的解决方案...