2

我在 python 中编写了一些测试脚本,它们为特定的应用程序调用了一些 api,并将结果输出到数据库,这样我就可以使用 jasper 来报告结果。目前,脚本使用python 解释器运行,即双击python 文件,该文件在脚本中修改了一些参数和变量,然后启动测试。我想转向一个更加用户友好的界面,这样其他人就可以使用这些测试脚本而无需修改 python 代码。所以我正在考虑使用 django 并创建一个包含复选框的网页,如果勾选了复选框,那么它将执行特定的 python 测试脚本或将值传递给给定变量的文本框,例如. 关于如何实现这一点,我有几个问题。

1 - 我需要在 django 源代码中实现 python 代码还是可以从 django 提供的网页调用 python 脚本?

2 - 如果我要从网页运行它,我如何确保如果网页关闭,测试将在后台继续。

3 - 有没有办法将测试用例的状态输出到网页,如果网页已关闭,如果网页重新打开,状态是否可用?

非常感谢 - 奥利

4

2 回答 2

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视图中,您可以访问数据库中的测试结果值。

用户是否关闭浏览器不会影响已经启动的服务器进程。而且由于您将结果写入数据库,因此它们是持久的,并且可以在测试完成后随时访问。

于 2012-06-05T01:42:59.927 回答
0

如果您不想将脚本移植到 django 视图中,还有另一种方法:

1 - 设置一个表单,其中包含要传递给脚本的所有选项

2 - 获取或发布表单参数并使用var1 = request.POST['param1']等将它们保存到变量中

3 - 使用调用的模块subprocess来执行您的脚本。http://docs.python.org/library/subprocess.html

于 2012-06-05T09:33:18.793 回答