我正在使用 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/