我想在Scrapy中执行一些unit testing(screen scraper / web crawler)。 由于一个项目是通过“scrapy crawl”命令运行的,我可以通过像鼻子这样的东西运行它。 由于scrapy是在扭曲的基础上构build的,我可以使用它的unit testing框架Trial? 如果是这样,怎么样? 否则,我想鼻子工作。 更新: 我一直在讨论Scrapy-Users ,我想我应该“在testing代码中构build响应,然后调用带有响应的方法,并断言[我]在输出中获得预期的项目/请求。 我似乎无法得到这个工作。 我可以build立一个unit testingtesting课程,并在testing中: 创build一个响应对象 尝试用响应对象调用我的蜘蛛的parsing方法 但是它最终会产生这个回溯。 任何洞察力为什么?
是否有可能在tearDown()方法中得到testing结果(即所有断言是否已经通过)? 我正在运行Selenium脚本,我想从tearDown()内部做一些报告,但是我不知道这是否可能。
我无法在virtualenv项目中使用鼻子(nosetests) – 似乎无法find安装在virtualenv环境中的软件包。 奇怪的是我可以设置 test_suite = 'nose.collector' 在setup.py中运行testing就好了 python setup.py test 但是当直接testing鼻子时,会有各种各样的input错误。 我已经用全系统安装的鼻子和一个virtualenv鼻子套件来尝试它,没有运气。 有什么想法吗? 谢谢!!
尽pipe安装了插件,但我似乎无法使用鼻子获得代码覆盖范围。 有想法该怎么解决这个吗? 12:15:25 ~/sandbox/ec$ nosetests –plugins Plugin xunit Plugin deprecated Plugin skip Plugin multiprocess Plugin failuredetail Plugin capture Plugin logcapture Plugin coverage Plugin attributeselector Plugin doctest Plugin profile Plugin id Plugin allmodules Plugin collect-only Plugin isolation Plugin pdb 12:15:34 ~/sandbox/ec$ nosetests -v –with-coverage nose.plugins.cover: ERROR: Coverage not available: unable to import coverage module tests.edgecast_client_tests.test_log … […]
有什么理由为什么鼻子不能在Ubuntu 9.04中findtesting? 我用鼻子0.11.1与Python 2.5.4。 我只能在明确指定文件名的情况下运行testing。 如果我不指定文件名,它只是说, 0testing 。 同样的项目在我的Mac上运行得很好,所以我很难过!
这是一个经常以不同forms提出的问题,经常会得到“哈哈,你做得不好”的反应。 可以肯定的是,这是因为人们(包括我)试图用作实现的常识情况,解决scheme并不明显(如果以前没有这样做的话)。 会接受“让飞出瓶子”的答案。 特定 project/ __init__.py /code __init__.py sut.py /tests __init__.py test_sut.py tests_sut.py开始的地方: import code.sut 在根目录下运行nosetests导致: ImportError: No module named code.sut 途径: a)做一个相对的使用 from ..code import sut b)将项目的根添加到PYTHONPATH c)使用 sys.path.append 在每个testing模块开始时的导入之前添加..path。 d)只记得做一个 setup.py 在运行testing之前将模块安装到站点包中。 所以要求testing位于可以访问项目的testing包根目录下。 上面的每个人都不觉得“自然”,已经certificate有问题,或者看起来像太辛苦了! 在Java中,这个工作,但基本上是由你的构build工具/ IDE的所有类放在类path。 也许问题是我期待Python的“魔力”? 在Flask webframeworktesting中注意到,选项d)似乎是首选。 无论如何,下面推荐一个首选解决scheme的陈述将会消除我自己的“不自然”的感觉。
我已经开始研究一个相当大的(multithreading的)Python项目,并加载了(单元)testing。 最重要的问题是运行应用程序需要一个预设的环境,这是由上下文pipe理器实现的。 到目前为止,我们使用了可以在这个pipe理器中运行testing的unit testing运行器的补丁版本,但是这不允许在不同的testing模块之间切换上下文。 鼻子和pytest都支持这样的事情,因为它们支持多个粒度的固定装置,所以我们正在考虑切换到鼻子或pytest。 这两个库也将支持“标记”testing,并只运行这些标记的子集,这也是我们想要做的。 我一直在浏览nose和pytest的文档,据我所知,这些库的大部分基本上支持相同的function,除了可以命名不同,或者需要稍微不同的语法。 另外,我注意到可用插件中的一些小的差异(鼻子有多进程支持,pytest似乎不是) 所以看来,魔鬼在细节上,这意味着(通常至less)在个人的品味,我们最好去适合我们的个人品味最好的图书馆。 所以我会要求一个主观的论证,为什么我应该用鼻子或pytest去select最适合我们需要的图书馆/社区组合。
我似乎无法得到鼻子testing框架识别文件结构中我的testing脚本下面的模块。 我已经设置了最简单的例子来演示这个问题。 我会在下面解释。 这是包文件结构: ./__init__.py ./foo.py ./tests ./__init__.py ./test_foo.py foo.py包含: def dumb_true(): return True tests / test_foo.py包含: import foo def test_foo(): assert foo.dumb_true() 两个init .py文件都是空的 如果我在主目录(foo.py所在的位置)运行nosetests -vv ,我会得到: Failure: ImportError (No module named foo) … ERROR ====================================================================== ERROR: Failure: ImportError (No module named foo) ———————————————————————- Traceback (most recent call last): File "/usr/lib/python/site-packages/nose-0.11.1-py2.6.egg/nose/loader.py", line 379, in […]
我有一个testing/function目录中的一堆testing的塔1.0应用程序。 我得到奇怪的testing结果,我想只运行一个testing。 鼻子文档说我应该能够在命令行中传入testing名称,但无论我做什么,都会收到ImportErrors 例如: nosetests -x -s sometestname 得到: Traceback (most recent call last): File "/home/ben/.virtualenvs/tsq/lib/python2.6/site-packages/nose-0.11.4-py2.6.egg/nose/loader.py", line 371, in loadTestsFromName module = resolve_name(addr.module) File "/home/ben/.virtualenvs/tsq/lib/python2.6/site-packages/nose-0.11.4-py2.6.egg/nose/util.py", line 334, in resolve_name module = __import__('.'.join(parts_copy)) ImportError: No module named sometestname 我得到相同的错误 nosetests -x -s appname.tests.functional.testcontroller 什么是正确的语法?
到目前为止,我一直在使用内置的unittest模块(pyUnit)来进行Python代码的unit testing。 但是,对于简单的情况,这似乎是矫枉过正。 作为xUnit的一个衍生物,对于Python的dynamic特性来说,看起来有点沉重,在这种情况下,我希望减less写入以达到相同的效果。 另一方面,它是内置的,它使你以有组织的方式编写你的testing,而且是按时间testing的。 我在网上看到的主要select是: py.test 鼻子 你喜欢哪个框架?为什么? 更新10.12.2011:最近增加了testing自动发现和unit testing(Python 2.7和3.2)中的许多新function,恕我直言,使用外部库的意义不大。 关于doctest:我不认为它是一个unit testing框架本身。 我绝对不会使用它来编写大型应用程序的大套testing。 doctest更适合确保您在文档工作中提供的示例。 它有这个需求的地方,但它不是unit testing,py.test和其他框架的竞争对手。