我在python中编写了一些测试脚本,它们为一个paritcular应用程序调用了一些api并将结果输出到数据库,因此我可以使用jasper来报告结果。目前脚本是使用python解释器运行的,即双击python文件,该文件包含一些参数和在脚本中修改的变量,然后启动测试。我想转向更友好的用户界面,以便其他人可以使用这些测试脚本而无需修改python代码。所以我正在考虑使用django并创建一个带有复选框的网页,如果勾选了复选框,那么它将执行特定的python测试脚本或将值传递给给定变量的文本框,例如。关于如何实现这一点,我有几个问题。
1 - 我需要在django源代码中实现python代码,还是可以从django提供的网页调用python脚本?
2 - 如果我是从网页上运行的,我怎么能确保如果网页关闭,测试将在后台继续。
3 - 有没有办法将测试用例的状态输出到网页,如果网页已关闭,如果重新打开网页,状态是否可用?
非常感谢 - oli
答案 0 :(得分:3)
如果你有一个python函数,你可以从Django django视图调用,也可以使用表单作为参数输入。如果您有长时间运行的流程,您可能需要从此处考虑提示:How to start a long-running process from a Django view?
from mytests import testfunc
def test_parameter_view(request):
if request.method == 'POST': # If the form has been submitted...
form = ParameterForm(request.POST)
if form.is_valid():
testfunc(form.cleaned_data['parameter']) # <-- Here the actual testing happens
return HttpResponseRedirect(reverse(test_result)) # Redirect after POST
else:
form = ParameterForm()
return render_to_response('test.html', {
'form': form,
})
在test_result
视图中,您可以从数据库访问测试结果值。
如果用户关闭浏览器,则不会影响已经启动的服务器进程。由于您将结果写入数据库,因此它们是持久的,并且可以在测试结束后随时访问。
答案 1 :(得分:0)
如果您不想将脚本移植到django视图中,还有另一种方法:
1 - 设置一个表单,其中包含您希望传递给脚本的所有选项
2 - 获取或发布表格参数并使用var1 = request.POST['param1']
等将其保存到变量中
3 - 使用名为subprocess
的模块来执行您的脚本。 http://docs.python.org/library/subprocess.html