gpt4 book ai didi

python Nose 和扭曲

转载 作者:行者123 更新时间:2023-12-01 06:14:51 27 4
gpt4 key购买 nike

我正在为一个函数编写一个测试,该函数使用 Twisted 从 url 下载数据(我知道twisted.web.client.getPage,但是这个函数添加了一些额外的功能)。不管怎样,我想使用nosetests,因为我在整个项目中都使用它,并且仅对这个特定的测试使用Twisted Trial 看起来并不合适。所以我想做的是:

from nose.twistedtools import deferred

@deferred()
def test_download(self):
url = 'http://localhost:8000'

d = getPage(url)

def callback(data):
assert len(data) != 0

d.addCallback(callback)
return d

在 localhost:8000 上监听测试服务器。问题是我总是遇到twisted.internet.error.DNSLookupError

DNSLookupError:DNS 查找失败:找不到地址“localhost:8000”:[Errno -5] 没有与主机名关联的地址。

有什么办法可以解决这个问题吗?有人真正使用nose.twistedtools吗?

更新:更完整的回溯

Traceback (most recent call last):
File "/usr/local/lib/python2.6/dist-packages/nose-0.11.2-py2.6.egg/nose/twistedtools.py", line 138, in errback
failure.raiseException()
File "/usr/local/lib/python2.6/dist-packages/Twisted-9.0.0-py2.6-linux-x86_64.egg/twisted/python/failure.py", line 326, in raiseException
raise self.type, self.value, self.tb
DNSLookupError: DNS lookup failed: address 'localhost:8000' not found: [Errno -5] No address associated with hostname.

更新2

我的错,似乎在 getPage 的实现中,我做了类似的事情:

obj = urlparse.urlparse(url)
netloc = obj.netloc
当我应该传递 netloc.split(':')[0]

时,将 netloc 传递给工厂

最佳答案

您确定您的 getPage 函数正确解析 URL 吗?错误消息似乎表明它在进行 dns 查找时同时使用主机名和端口。

你说你的getPage类似于twisted.web.client.getPage,但是当我在这个完整的脚本中使用它时,它对我来说效果很好:

#!/usr/bin/env python
from nose.twistedtools import deferred
from twisted.web import client
import nose

@deferred()
def test_download():
url = 'http://localhost:8000'

d = client.getPage(url)

def callback(data):
assert len(data) != 0

d.addCallback(callback)
return d

if __name__ == "__main__":
args = ['--verbosity=2', __file__]
nose.run(argv=args)

在我的主目录中运行一个简单的 http 服务器时:

$ python -m SimpleHTTPServer
Serving HTTP on 0.0.0.0 port 8000 ...

Nose 测试给出以下输出:

.
----------------------------------------------------------------------
Ran 1 test in 0.019s

OK

关于 python Nose 和扭曲,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3863374/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com