sách gpt4 ai đã đi

django - 从 Django 测试访问 Django 测试服务器

In lại 作者:行者123 更新时间:2023-12-05 00:08:54 30 4
mua khóa gpt4 Nike

我想编写一个直接执行 HTTP 请求的单元测试(而不是使用 django.test.client.Client)。

如果您好奇为什么 - 那是因为我想测试我从 Django 应用程序公开的 Thrift-over-HTTP API - 我想在单元测试中使用 Thrift 客户端。

问题是在测试期间,服务器实际上并未运行。当使用 django.test.client.Client 时,它只会调用 View 函数而不是实际发出 HTTP 请求。 (如果我错了,请纠正我。)

那么强制测试框架启动 HTTP 服务器的最佳方法是什么?

我尝试编写一个执行以下操作的 bash 脚本:

./manage.py testserver --addrport 7000 &
PID=$!
sleep 5
./manage.py test --no-input
kill $PID

但这很困惑(并且实际上不起作用),因为 1)我需要 sleep (否则测试将在测试服务器初始化数据库之前开始)和 2)测试将再次尝试初始化数据库(在testserver 已经初始化了它)。

对此还有其他解决方案吗?

谢谢你。

1 Câu trả lời

是的,你是对的 - 这是一个问题,它有一个错误:http://code.djangoproject.com/ticket/2879

只是,你可能会遇到多线程问题,有意省略:http://code.djangoproject.com/ticket/10117 http://code.djangoproject.com/ticket/4513 http://code.djangoproject.com/ticket/3357

我很沮丧,因此我编写了一个库,其中包括在单独的线程中启动实时服务器并在之后对其进行清理:http://devel.almad.net/trac/django-sane-testing/ .它还通过运行时monkeypatching 启动Django 的多线程服务器,您可以改用cherrypy http(无论如何都更好)。

唯一的问题是它需要你使用 Nose 作为测试框架(与标准单元测试 100% 向后兼容,但如果你已经在使用其他东西......)。然后你可以只使用--with-django 和--with-djangoliveserver/--with-cherrypyliveserver。不知道它将如何与节俭一起工作。

请注意:

  • 请不要用错误报告来打扰 Django 开发人员,你是自己的
  • Windmill 提供了相同的解决方案,因此如果您使用的是 Windmill,您可能会遇到端口冲突
  • 关于django - 从 Django 测试访问 Django 测试服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1011088/

    30 4 0
    行者123
    Hồ sơ cá nhân

    Tôi là một lập trình viên xuất sắc, rất giỏi!

    Nhận phiếu giảm giá Didi Taxi miễn phí
    Mã giảm giá Didi Taxi
    Giấy chứng nhận ICP Bắc Kinh số 000000
    Hợp tác quảng cáo: 1813099741@qq.com 6ren.com