Django testing ajax endpoint in view



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

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

{% 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/端点中.py我有函数(简化):

def check_provisioning(request):
    # Do some stuff                
    return {'complete': some_boolean}

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

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

你可以

使用类似django-casper的东西:

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

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

PhantomJS是一个基于Web套件的无头浏览器,它为使用Selenium的浏览器自动化提供了一种更轻量级的替代方案。

最新更新