- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在使用 Django (1.5.5)、selenium (2.41.0)、splinter (0.6.0) 和 phantomjs (1.9.7) 来运行实时测试。
虽然测试大部分都有效,但时不时地(在 CircleCI 上很常见,在本地 VM 中很少见)它们会挂起,直到 CircleCI 超时或我手动杀死运行者(Ctrl-C 即。KeyboardInterrupt 工作) .
这是我的基础测试类的样子:
class SplinterTestCase(LiveServerTestCase):
@classmethod
def setUpClass(cls):
super(SplinterTestCase, cls).setUpClass()
# start phantom just once per class, to speed up tests
cls.phantom = splinter.Browser('phantomjs', load_images=False)
@classmethod
def tearDownClass(cls):
cls.phantom.quit()
super(SplinterTestCase, cls).tearDownClass()
def login(self, *args, **kwargs):
# perform a login using Django builtin "client", steal the session
# cookie and inject it to phantomjs, avoiding the need to do the
# login dance for each test
from django.conf import settings
cn = settings.SESSION_COOKIE_NAME
self.django_client.login(*args, **kwargs)
if cn in self.django_client.cookies:
self.client.driver.add_cookie({
'name': cn,
'value': self.django_client.cookies[cn].value,
'path': '/',
'domain': 'localhost'
})
def setUp(self):
# use phantom as the test client instead of Django's
super(SplinterTestCase, self).setUp()
self.django_client = self.client
self.client = self.phantom
def tearDown(self):
# this seems to help somewhat (decreases the number of timeouts), but
# doesn't solve it completely
self.client.visit('about:config')
super(SplinterTestCase, self).tearDown()
在 Ctrl-C 之后,这是我得到的堆栈跟踪:
Theo dõi (cuộc gọi gần đây nhất là cuộc gọi cuối cùng):
File "/usr/lib/python2.7/wsgiref/handlers.py", line 86, in run
self.finish_response()
File "/usr/lib/python2.7/wsgiref/handlers.py", line 127, in finish_response
self.write(data)
File "/usr/lib/python2.7/wsgiref/handlers.py", line 215, in write
self._write(data)
File "/usr/lib/python2.7/socket.py", line 324, in write
self.flush()
File "/usr/lib/python2.7/socket.py", line 303, in flush
self._sock.sendall(view[write_offset:write_offset+buffer_size])
error: [Errno 104] Connection reset by peer
Theo dõi (cuộc gọi gần đây nhất là cuộc gọi cuối cùng):
File "/home/ubuntu/memo-angel/venv/local/lib/python2.7/site-packages/django/test/testcases.py", line 998, in _handle_request_noblock
self.process_request(request, client_address)
File "/usr/lib/python2.7/SocketServer.py", line 310, in process_request
self.finish_request(request, client_address)
File "/usr/lib/python2.7/SocketServer.py", line 323, in finish_request
self.RequestHandlerClass(request, client_address, self)
File "/home/ubuntu/memo-angel/venv/local/lib/python2.7/site-packages/django/core/servers/basehttp.py", line 150, in __init__
super(WSGIRequestHandler, self).__init__(*args, **kwargs)
File "/usr/lib/python2.7/SocketServer.py", line 640, in __init__
self.finish()
File "/usr/lib/python2.7/SocketServer.py", line 693, in finish
self.wfile.flush()
File "/usr/lib/python2.7/socket.py", line 303, in flush
self._sock.sendall(view[write_offset:write_offset+buffer_size])
error: [Errno 32] Broken pipe
类似的问题可能已在 Django with splinter and phantomjs is painfully slow 中讨论过正如原始海报还提到的那样“它只是卡住,直到我没有耐心等待它完成”。那里的答案提到尝试将 phantomjs 启动/停止放在类设置/拆卸中,我在这里做了,但它没有解决问题。
有没有人遇到过类似的问题,如果遇到过,解决方法是什么?
câu trả lời hay nhất
为了确定问题并使测试更快失败,您可能需要在 setUpClass/setUp 中配置套接字超时:
import socket
...
socket.setdefaulttimeout(10)
关于python - 带有 phantomjs 间歇性挂起/超时的 Django LiveServerTestCase,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23008256/
Tôi còn khá mới đối với Python-Django và phát triển web và tôi đang gặp khó khăn về vấn đề cụ thể này là tạo tài nguyên mới bằng POST. Tôi đang sử dụng khung công tác Django REST cho API REST và tôi đang cố gắng tạo một tài nguyên mới
Tôi đã lưu trữ thành công tài liệu Word vào S3 bằng cách sử dụng kho lưu trữ Django. Tài liệu lớp (TitleSlugDescriptionModel, TimeStampedModel
Tôi có 2 câu hỏi về proxy mô hình, làm cách nào để tạo đối tượng proxy từ đối tượng mô hình? Làm cách nào để tạo bộ truy vấn proxy từ bộ truy vấn mô hình? Ví dụ: giả sử chúng ta xác định: from django.contrib.auth.models import
Tôi muốn viết một bài kiểm tra đơn vị thực hiện các yêu cầu HTTP trực tiếp (thay vì sử dụng django.test.client.Client). Nếu bạn tò mò tại sao - đó là vì tôi muốn thử nghiệm Thrif mà tôi trưng ra từ ứng dụng Django của mình
Tôi đã bắt đầu một dự án django cho trang web cá nhân của mình để học django. Cho đến nay tôi đã thiết lập môi trường phát triển của mình với mọi thứ tôi cần và làm theo hướng dẫn tuyệt vời này để tạo một số cấu trúc và mẫu dữ liệu cơ bản. Bây giờ tôi muốn bắt đầu sử dụng trước đây của tôi
Tôi đã đọc rất nhiều về cách thêm các trường bổ sung khi đăng ký với Django, như tại đây, tại đây và tại đây. Đoạn mã là: lớp Forms.py (từ ứng dụng đăng ký) Người đăng ký
Tôi đang viết một ứng dụng xã hội nhỏ. Một trong những tính năng là viết tên người dùng vào tiêu đề trang web. Vì vậy, ví dụ, nếu tôi đăng nhập và tên của tôi là Oleg (tên người dùng), thì tôi sẽ thấy: Xin chào, Oleg Nhấp để chỉnh sửa prof |
Tôi có một ứng dụng được phát triển bằng khung công tác Django và Django Rest. Tôi muốn thêm chức năng đảo ngược django vào ứng dụng của mình. Tôi đã thử http://django-reversi
Tôi có biểu mẫu HTML đơn giản, tôi không sử dụng biểu mẫu Django nhưng bây giờ tôi muốn thêm phần chọn. Tuy nhiên, các lựa chọn được tạo dễ dàng nhất dưới dạng Django ChoiceField (ngược lại với việc tạo các lựa chọn theo cách thủ công thông qua các vòng lặp, v.v.), tuy nhiên, nếu bạn không có
Không hiểu tại sao người ta lại viết khóa ngoại theo hai cách, mục đích của việc này là gì? Chúng giống nhau hay khác nhau? Tôi nhận thấy rằng một số người viết như thế này: Author = models.ForeignKey(Author, on_delete=mod
Tôi muốn nhận được mười bài đăng có nhiều bình luận nhất trong ứng dụng Django của mình, nhưng tôi không thể vì tôi không nghĩ ra cách thích hợp. Tôi hiện đang sử dụng khung nhận xét django và tôi đã thấy sử dụng tổng hợp hoặc chú thích
Điều này vẫn hoạt động với Django 1.2 phải không? Bộ lọc tùy chỉnh trong Django Quản trị viên trên Django 1.3 trở xuống Tôi đã thử nhưng list_filter trong lớp quản trị viên
问题在于,当 django-compressor 编译为 .js 文件的 CoffeeScript 文件中引用 {{ STATIC_URL }} 时,它无法正确加载。 在我的 django 模板中,我
我正在尝试将一些字段从一个 django 模型移动到一个新模型。假设我有一个书籍模型: class Book(models.Model): title = models.CharField(max
Tôi muốn nhận được mười bài đăng có nhiều bình luận nhất trong ứng dụng Django của mình, nhưng tôi không thể vì tôi không nghĩ ra cách thích hợp. Tôi hiện đang sử dụng khung nhận xét django và tôi đã thấy sử dụng tổng hợp hoặc chú thích
目前我正在寻找在 Django 中实现访问控制。我已经阅读了有关内置权限的内容,但它并不关心每个对象的基础。例如,我想要“只有创建者可以删除自己的项目”之类的权限。所以我读到了 django-guar
嗨,我正在将我的 Django 模型的一个字段的值设置为其他模型的另一个字段的值。这个值应该是动态变化的。 这是我的第一个模型 class MainModel(AbstractBaseUser, Pe
我正在尝试为我的模型创建一个编辑表单。我没有使用模型表单,因为根据模型类型,用户可以使用不同的表单。 (例如,其中一个表单有 Tinymce 小部件,而另一个没有。) 有没有什么方法可以使用模型设置表
Django 模板中的搜索字段 如何在类似于此图像的 Django 模板中创建搜索字段 http://asciicasts.com/system/photos/1204/original/E354I0
根据 Django documentation ,如果 Django 安装激活了 AuthenticationMiddleware,HttpRequest 对象有一个“user”属性代表当前登录的用户
Tôi là một lập trình viên xuất sắc, rất giỏi!