我有python脚本,例如位于目录A中的a.py,b.py,c.py:
我想创建测试套件,它将按顺序执行所有这些python脚本。 这些脚本不是单元测试。那些是常规的python脚本。
请告诉我如何在测试套件中运行它们并在执行后生成报告。
感谢您的时间
答案 0 :(得分:2)
我认为你想要的实际上是在shell或命令行上完成的,如果你在Windows上。您可以循环遍历每个文件并按顺序执行每个脚本。然后,您可以通过在python中使用open()命令,在完成处理之后生成报告以保存在文件中。
bash脚本的语法是
for file in /path/to/dir_with_files/*.py;
do;
python $file;
done;
这将使用程序循环遍历文件并执行以.py扩展名结尾的每个文件。
现在,在使用上述脚本测试并执行完毕后,向自己发送报告。你需要做两件事才能做到这一点,
1号是容易的部分。为此,您只想将每个测试的结果写入文件,如此,
results = open('results.txt', 'w')
results.write('results') #This is going to need to be what the results of
#the test are, I.E. the numbers it produces, or such
results.close()
您只需将其添加到每个脚本的末尾,即可创建一个可以使用步骤2发送的文本文件。
第2步有点棘手。要做到这一点,您需要两件事之一,一个模块与您使用的任何邮件客户端(gmail,comcast,yahoo等)进行交互,或者您自己的SMTP服务器从那里发送邮件。如果您使用后者,Python有一个内置模块来处理它,记录here。
现在,如果您想与邮件客户端进行交互,则需要下载模块并安装要使用的模块。例如,gmail有this,它会将您登录到他们的服务中,并通过他们的服务器发送消息。我确定最受欢迎的电子邮件客户端会有这样的模块,所以只需谷歌吧。这比方法1容易得多,因为您不需要SMTP服务器。
答案 1 :(得分:1)
您还可以编写其他python文件:
import subprocess as sb # use shell cmds
import os # list directory
file_output = open("myOutput.txt", "w") # output file
for f in os.listdir("path/to/the/directory"): # you can use "."
if (f.endswith(".py")): # for each python file
file_output.write("Execution of "+f+"\n\n") # write the name
file_output.write(sb.getoutput("python "+f)+"\n\n") # write output
file_output.close()