我在Windows上编程python,并希望准确测量function运行所需的时间。 我写了一个函数“time_it”,它接受另一个函数,运行它,并返回运行所需的时间。 def time_it(f, *args): start = time.clock() f(*args) return (time.clock() – start)*1000 我把这1000次称为平均值。 (最后的1000常数是以毫秒为单位给出答案)。 这个函数似乎可行,但是我有这种唠叨的感觉,我做错了什么,而且通过这样做,我使用的时间超过了函数在运行时实际使用的时间。 有没有更标准或可接受的方式来做到这一点? 当我改变我的testing函数调用打印,以便它需要更长的时间,我的time_it函数返回平均2.5毫秒,而cProfile.run('f()')返回和平均7.0毫秒。 我想我的function会高估时间,如果有的话,这是怎么回事? 还有一点需要注意的是,我所关心的function的相对时间是相对的,而不是绝对的时间,因为硬件和其他因素会有明显的变化。
使用intellij和maven pom文件,我该如何debugging在maventesting目标中运行的testing? 当我直接在代码中运行它们时,它会抱怨一些关于configuration文件缺失的内容,我在intellij的Maven项目中勾选了这些内容。
我不知道我是否正确地组织了我的包结构,或者在setup.py中使用了正确的选项,因为我在尝试运行unit testing时遇到错误。 我有这样的结构: /project /bin /src /pkgname __init__.py module1.py module2.py /tests __init__.py test1.py test2.py 我的setup.py如下所示: #!/usr/bin/env python from setuptools import setup, find_packages setup(version='0.1', description='Trend following library', author='Nate Reed', author_email='nate@natereed.com', packages=find_packages(), install_requires=['numpy'], test_suite="tests", ) 当我运行“python setup.py test”时,我得到: nate@nate-desktop:~/PycharmProjects/trendfollowing$ sudo python setup.py test running test running egg_info writing requirements to UNKNOWN.egg-info/requires.txt writing UNKNOWN.egg-info/PKG-INFO writing top-level names to […]
好吧,我长期以来一直在磕磕绊绊,我想听听其他社区的意见。 首先,我们来看看一些抽象控制器。 function Ctrl($scope, anyService) { $scope.field = "field"; $scope.whenClicked = function() { util(); }; function util() { anyService.doSmth(); } } 显然我们在这里: 控制器的定期脚手架与$scope和一些服务注入 一些领域和function附加到范围 私有方法util() 现在,我想在unit testing(Jasmine)中介绍这门课。 但是,问题是我想validation当我点击(调用whenClicked() )一些项目,将调用util()方法。 我不知道该怎么做,因为在Jasminetesting中,我总是得到一些错误,要么是util()的模拟没有被定义或者没有被调用。 注意:我没有试图解决这个特定的例子,我总是在testing这样的代码模式。 所以请不要告诉我“什么是确切的错误”。 我在问怎么做,而不是如何解决这个问题。 我一直在尝试很多方法: 显然我不能在我的unit testing中使用$scope ,因为我没有附加到这个对象的这个函数(它通常以消息Expected spy but got undefined结尾, Expected spy but got undefined或相似) 我尝试通过Ctrl.util = util;将这些函数附加到控制器对象Ctrl.util = util; 然后validationCtrl.util = jasmine.createSpy()像Ctrl.util = […]
我有几个node.js环境和浏览器中的节点包。 现在我有两个单独的testing(针对每个环境)。 用npm test命令运行这些testing的最好方法是什么? 另外我想将这些软件包添加到Travis。 我正在使用mocha和mocha-phantomjs 。 节点testing命令 node ./node_modules/mocha/bin/mocha ./test/node/index.js –reporter spec 浏览器testing命令 node ./node_modules/mocha-phantomjs/bin/mocha-phantomjs ./test/browser/index.html 我试过的: 将这些命令添加到用分号分隔的npm test脚本中 问题:当第一个脚本出现错误,但第二个脚本没有错误时,命令退出0,并通过travis构build。 让节点命令在npm test脚本中testing,并为浏览器testing创build自定义脚本。 将这两个命令( npm test和npm run-script test-browser )添加到travis.yml中作为数组。 问题:用户必须手动运行两个独立的testing脚本。 让节点命令在npm test脚本中npm test ,并将浏览器testing添加到npm posttest命令中。 Travis.yml只会有一个脚本,用户也需要运行一个脚本(每个人都很高兴)。 问题:这只是感觉不对,所以我想知道是否有更好的方法。
我最近发现了py.test 。 这似乎很棒。 不过,我觉得文件可能会更好。 我试图了解什么conftest.py文件是用来作为。 在我的(目前很小的)testing套件中,我在项目根目录下有一个conftest.py文件。 我用它来定义我注入到testing中的灯具。 我有两个问题: 这是conftest.py的正确使用吗? 它有其他用途吗? 我可以有多个conftest.py文件吗? 我什么时候想要这样做? 例子将不胜感激。 更一般地说,你如何定义pytesttesting套件中conftest.py文件的目的和正确使用?
当我运行我的testing时,我得到了上述错误信息。 下面是我的代码(我使用Backbone JS和Jasmine进行testing)。 有谁知道为什么发生这种情况? $(function() { describe("Category", function() { beforeEach(function() { category = new Category; sinon.spy(jQuery, "ajax"); } it("should fetch notes", function() { category.set({code: 123}); category.fetchNotes(); expect(category.trigger).toHaveBeenCalled(); } }) }
在几年的不全面使用之后再回到更多的.NET,并想知道现在的unit testing包是什么。 我对NUnit(几年前)很熟悉,并且与IronRuby进行了一些简单的交stream,目的是让类似rspec的东西能够继续使用,但是除此之外不太了解。 我意识到我可以谷歌这一点,并称之为一天,但我相信我可能得到一个更好,更知情的答复在这里问一个问题:-) build议?
继续从下面的想法: 有没有任何可证实的现实世界的语言? 我不了解你,但是我厌倦了写我不能保证的代码。 在问上面的问题并得到一个惊人的回应(谢谢所有!)我已经决定缩小我的search一个可certificate的,实用的方法, 哈斯克尔 。 我select了Haskell是因为它确实有用(有很多为它编写的Web 框架 ,这似乎是一个很好的基准) ,我认为它在function上是足够严格的,它可能是可certificate的,或者至less允许testing不variables。 这是我想要的 (而且一直无法find) 我想要一个框架,可以看看一个Haskell函数,添加,写在psudocode: add(a, b): return a + b – 并检查某些invarients是否保留每个执行状态。 我更喜欢一些正式的证据,但我会解决像模型检查。 在这个例子中,不variables是给定值a和b ,返回值总是和a + b 。 这是一个简单的例子,但我不认为这样的框架是不可能存在的。 一个函数的复杂性肯定会有一个上限,可以被testing(一个函数的10个stringinput肯定需要很长时间!),但是这会鼓励更仔细的函数devise,并且与使用其他forms方法。 想象一下,使用Z或B,当你定义variables/设置时,你要确保你给variables尽可能小的范围。 如果你的INT永远不会超过100,那么确保你初始化它! 像这样的技术和适当的问题分解应该 – 我认为 – 允许对像Haskell这样的纯函数语言进行满意的检查。 我还没有很正式的方法或Haskell经验。 让我知道,如果我的想法是一个健全的,或者你认为哈斯克尔不适合? 如果您build议使用不同的语言,请确保它通过“has-a-web-framework”testing,并阅读原始问题 🙂
我想testing是否在我的Javascript对象构造函数中调用以下方法。 从我在Jasmine文档中看到的,我可以窥探一个构造函数方法,并且可以在一个对象被实例化之后监听方法,但是我似乎无法在构造对象之前窥探一个方法。 物体: Klass = function() { this.called_method(); }; Klass.prototype.called_method = function() { //method to be called in the constructor. } 我想在规范中做这样的事情: it('should spy on a method call within the constructor', function() { spyOn(window, 'Klass'); var obj = new Klass(); expect(window.Klass.called_method).toHaveBeenCalled(); });