Django在视图中测试ajax端点

时间:2014-12-31 21:41:59

标签: python ajax django unit-testing django-testing

我在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 / endpoints.py中我有函数(简化):

def check_provisioning(request):

    # Do some stuff                

    return {'complete': some_boolean}

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

有没有人知道我可以单元测试视图和/或端点功能实际上正在做他们应该做的事情的方式?我宁愿不再使用django测试框架来为这个使用django-ajax的整个项目中的一个视图设置selenium测试。

1 个答案:

答案 0 :(得分:1)

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

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

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

PhantomJS是一款基于网络工具包的无头浏览器,通过selenium为浏览器自动化提供了更轻量级的替代方案。