python - Django 在 View 中测试 ajax 端点

标签 python ajax django unit-testing django-testing

我正在使用 django-ajax在 Django 应用程序中,并希望对使用它的 View 进行更彻底的单元测试。

我的特定 View 模板包含以下内容:

{% block head_js %} 
    <script type="text/javascript">
    $(function() {
        $('#progressbar').progressbar({
            value: false
        });

        var checkStatus = function() {
            $.ajax({
                type: "POST",
                url: '/ajax/MyApp/check_provisioning.json',
                dataType: 'json',
                success: function(data) {
                    if (data.data.complete != true) {
                        setTimeout(checkStatus, 3000);
                    } else {
                        // We've finished provisioning, time to move along.
                        window.location.replace('/MyApp/next');
                    }
                }
            });
        };

        checkStatus();
    });
    </script>
{% endblock %}

在 MyApp/endpoints.py 中我有函数(简化):

def check_provisioning(request):

    # Do some stuff                

    return {'complete': some_boolean}

现在...据我所知, View 在实际使用中运行良好。 但是在进行单元测试时,django 的测试客户端会检索呈现的响应,但不会运行其中嵌入的任何内容。

有谁知道我可以对 View 和/或端点函数实际执行它们应该执行的操作进行单元测试的方法吗?我宁愿不使用 django 测试框架来为整个项目中以这种方式使用 django-ajax 的一个 View 设置 selenium 测试。

最佳答案

你可以使用类似 django-casper 的东西:

https://github.com/dobarkod/django-casper

我没有使用过它,但它似乎是一个特定于 django 的 python 库,它与 CasperJS 和 PhantomJS 交互。

PhantomJS 是一个基于 web-kit 的 headless 浏览器,它为使用 selenium 的浏览器自动化提供了一个更轻量级的替代方案。

关于python - Django 在 View 中测试 ajax 端点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27726549/

相关文章:

python - 将函数返回的键值作为新列附加到 Dataframe

python - 生成器表达式组合行理解执行步骤

javascript - 通过 JavaScript 读取拖放有序列表

html - Django 中可重用的 HTML 组件库

Django 注释删除新行

python - 在 Python 中,如何创建 X 小时的日期时间?

python - Django:将 POST 请求参数转换为查询字符串

javascript - 通过弹出表单更新数据库时,表单提交不起作用

javascript - Ajax 函数在重定向后不保存滚动位置

python - 模块 'qrcode' 没有属性 'make'