小编Ste*_*gle的帖子

如何在目录中运行所有Python单元测试?

我有一个包含我的Python单元测试的目录.每个单元测试模块的形式为test _*.py.我正在尝试创建一个名为all_test.py的文件,您猜对了,运行上述测试表单中的所有文件并返回结果.到目前为止,我尝试了两种方法; 都失败了.我将展示这两种方法,我希望那里的人知道如何正确地做到这一点.

对于我的第一次勇敢的尝试,我想"如果我只是在文件中导入我的所有测试模块,然后调用这个unittest.main()doodad,它会工作,对吧?" 好吧,事实证明我错了.

import glob
import unittest

testSuite = unittest.TestSuite()
test_file_strings = glob.glob('test_*.py')
module_strings = [str[0:len(str)-3] for str in test_file_strings]

if __name__ == "__main__":
     unittest.main()
Run Code Online (Sandbox Code Playgroud)

这不起作用,我得到的结果是:

$ python all_test.py 

----------------------------------------------------------------------
Ran 0 tests in 0.000s

OK
Run Code Online (Sandbox Code Playgroud)

对于我的第二次尝试,我可以,也许我会尝试以更"手动"的方式完成整个测试.所以我试着在下面这样做:

import glob
import unittest

testSuite = unittest.TestSuite()
test_file_strings = glob.glob('test_*.py')
module_strings = [str[0:len(str)-3] for str in test_file_strings]
[__import__(str) for str in module_strings]
suites = [unittest.TestLoader().loadTestsFromName(str) for str in module_strings]
[testSuite.addTest(suite) for suite in suites]
print …
Run Code Online (Sandbox Code Playgroud)

python testing unit-testing python-unittest

268
推荐指数
10
解决办法
18万
查看次数

是否可以在javascript中创建"弱引用"?

在javascript中是否有任何方法可以创建另一个对象的"弱引用"?这是描述弱引用的维基页面. 这是另一篇用Java描述它们的文章.谁能想到在javascript中实现这种行为的方法?

javascript weak-references

88
推荐指数
4
解决办法
3万
查看次数

如何在rails中对destroy进行"验证"

在破坏一个宁静的资源时,我想在我允许销毁操作继续之前保证一些东西?基本上,如果我注意到这样做会将数据库置于无效状态,我希望能够停止销毁操作吗?在销毁操作上没有验证回调,那么如何"验证"是否应该接受销毁操作?

ruby ruby-on-rails callback

76
推荐指数
6
解决办法
5万
查看次数

是否可以在构造函数中的super()之前进行计算?

鉴于我有一个类Base,它有一个带有TextBox对象的参数构造函数作为它的参数.如果我有一个简单的以下形式的类:

public class Simple extends Base {
  public Simple(){
    TextBox t = new TextBox();
    super(t);
    //wouldn't it be nice if I could do things with t down here?
  }
}
Run Code Online (Sandbox Code Playgroud)

我会收到一个错误,告诉我对super的调用必须是构造函数中的第一个调用.但奇怪的是,我能做到这一点.

public class Simple extends Base {
  public Simple(){
    super(new TextBox());
  }
}
Run Code Online (Sandbox Code Playgroud)

为什么这是有限的,但第一个例子不是?我可以理解需要首先设置子类,也许不允许在调用超级构造函数之前实例化对象变量.但是t显然是一个方法(局部)变量,为什么不允许呢?

有没有办法解决这个限制?有没有一种安全的方法可以将变量保存到您可能构造的内容之前调用super但是在您输入构造函数之后?或者,更一般地说,允许在实际调用super之前进行计算,但是在构造函数中?

谢谢.

java

65
推荐指数
3
解决办法
3万
查看次数

如何在Google App Engine中写入控制台?

通常,当我编码时,我只想将小东西(主要是变量的当前值)打印到控制台.我没有看到Google App Engine的这类内容,但我注意到Google App Engine Launcher确实有一个Log终端.有没有办法使用Google App Engine写入所述终端或其他终端?

python logging google-app-engine

50
推荐指数
3
解决办法
2万
查看次数

我怎样才能得到Clojure:pre&:post来报告他们失败的价值?

(defn string-to-string [s1] 
  {:pre  [(string? s1)]
   :post [(string? %)]}
  s1)
Run Code Online (Sandbox Code Playgroud)

我喜欢:pre和:post条件,它们允许我弄清楚我何时更快地将"方形钉子放在圆孔中".也许这是错误的,但我喜欢将它们用作一种可怜的勒芒式检查器.这不是哲学,这是一个简单的问题.

在上面的代码中我似乎很容易确定这s1:pre条件中的函数参数.类似地,%:post条件总是函数返回值.

我想是打印的值s1或者%当任的这些相应的条件Asse田内失效.所以我得到了类似的东西

(string-to-string 23)

AssertionError Assert failed: (string? s1) 
(pr-str s1) => 23 
Run Code Online (Sandbox Code Playgroud)

AssertionError包含每个变量的单行,该变量被识别为来自函数参数列表并且在失败测试中被引用.当函数的返回值未通过:post条件时,我也想要类似的东西.

这将使得在尝试从AssertionError进行诊断时快速发现我滥用函数的方式变得微不足道.它至少会让我知道值是否nil是实际值(这是我犯的最常见的错误).

我有一些想法,这可能与宏来完成,但我想知道如果有办法基本上只是重新定义了任何安全和全球性的方式(defn(fn朋友们这样做是:pre:post也将打印导致测试值(S)失败.

clojure clojurescript

26
推荐指数
2
解决办法
4301
查看次数

如何禁止继承的项目logback.xml文件(单个项目中的2个logback.xml)?

我的项目com.samedhi/base有一个logback.xml文件,项目com.samedhi/derive也有一个logback.xml文件.项目' derive '依赖于' base '.当我" lein trampoline replon"' 衍生 '时,我收到以下警告.

....
15:34:30,066 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback.groovy]
15:34:30,066 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback-test.xml]
15:34:30,066 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Found resource [logback.xml] at [file:/home/stephen/Work/com.samedhi/derive/client/config/logback.xml]
15:34:30,067 |-WARN in ch.qos.logback.classic.LoggerContext[default] - Resource [logback.xml] occurs multiple times on the classpath.
15:34:30,067 |-WARN in ch.qos.logback.classic.LoggerContext[default] - Resource [logback.xml] occurs at [jar:file:/home/stephen/.m2/repository/com/samedhi/base.app/0.0.1-SNAPSHOT/base.app-0.0.1-SNAPSHOT.jar!/logback.xml]
15:34:30,067 |-WARN in ch.qos.logback.classic.LoggerContext[default] - Resource [logback.xml] …
Run Code Online (Sandbox Code Playgroud)

logging clojure leiningen

22
推荐指数
1
解决办法
9268
查看次数

Google App Engine for Python中的参考列表

在Google App Engine中,有一个ListProperty这样的东西允许您保存项目的列表(数组).您还可以指定所持项目的类型,例如字符串,整数或其他.

Google App Engine还允许您拥有ReferenceProperty.ReferenceProperty"包含"对另一个Google App Engine模型实体的引用.如果访问ReferenceProperty,它将自动检索引用指向的实际实体.这很方便,因为它可以获取密钥,然后获取所述密钥的实体.

但是,我没有看到任何像ListReferenceProperty(或ReferenceListProperty)这样的东西.我想保留一个对其他实体的引用列表,当我尝试访问列表中的元素时,它会自动解析.我能得到的最接近的是保存db.Key对象列表.我可以使用这些密钥然后从服务器手动检索其关联的实体.

这有什么好的解决方案吗?基本上,我希望能够对其他实体进行(自动解除引用)引用的集合.我几乎可以通过将密钥集合到其他实体来到达那里,但我希望它"知道"这些是关键项,并且它可以将它们作为服务取消引用给我.

谢谢

python google-app-engine

18
推荐指数
2
解决办法
2655
查看次数

"for"在clojure中实际上是不是很懒惰?

(take 2 (for [x (range 10)
              :let [_ (println x)]
              :when (even? x)] x))
>> (* 0
* 1
* 2
* 3
* 4
* 5
* 6
* 7
* 8
* 9
0 2)
Run Code Online (Sandbox Code Playgroud)

我以为我只是非常密集.但不是,事实证明Clojure实际上评估了任何延迟序列的前32个元素(如果可用).哎哟.

我有一个for递归电话:let.我很好奇为什么计算似乎是先进行广泛而不是深度优先.似乎计算(尽管,公平,不是内存)正在爆炸,因为我一直在递归树的所有上部分支.虽然代码的逻辑意图是深度优先的,但Clojure的32分块正在强制进行广泛的第一次评估.

无论如何,有没有简单的方法来强制1分块而不是32分块的懒惰序列?

list-comprehension clojure lazy-evaluation

15
推荐指数
1
解决办法
1101
查看次数

不能在clojurescript repl中"使用"

我在Clojurescript命名空间键入以下内容.

cljs.user> (use '[clojure.zip :only [insert-child]])

WARNING: Use of undeclared Var cljs.user/use at line 1 
"Error evaluating:" (use (quote [clojure.zip :only [insert-child]])) :as "cljs.user.use.call(null,cljs.core.vec([\"\\uFDD1'clojure.zip\",\"\\uFDD0'only\",cljs.core.vec([\"\\uFDD1'insert-child\"])]));\n"
#<TypeError: Cannot call method 'call' of undefined>
TypeError: Cannot call method 'call' of undefined
    at eval (eval at <anonymous> (http://localhost:3000/main.js:32728:147), <anonymous>:1:85)
    at eval (eval at <anonymous> (http://localhost:3000/main.js:32728:147), <anonymous>:6:3)
    at http://localhost:3000/main.js:32728:142
    at evaluate_javascript (http://localhost:3000/main.js:32741:4)
    at Object.callback (http://localhost:3000/main.js:32806:138)
    at goog.messaging.AbstractChannel.deliver (http://localhost:3000/main.js:31059:13)
    at goog.net.xpc.CrossPageChannel.deliver_ (http://localhost:3000/main.js:32164:14)
    at Function.goog.net.xpc.NativeMessagingTransport.messageReceived_ (http://localhost:3000/main.js:31732:13)
    at goog.events.Listener.handleEvent (http://localhost:3000/main.js:22590:26)
    at Object.goog.events.fireListener (http://localhost:3000/main.js:22924:21)
nil
Run Code Online (Sandbox Code Playgroud)

似乎在说明cljs.user命名空间中不存在'use'方法.这种方式对我来说很有意义,因为Clojurescript本身无法评估Clojure表达式.但是,我知道Clojurescript有一个clojure.zip命名空间,我在命名空间声明中使用了clojure.zip (:use [clojure.zip :only …

clojure clojurescript

15
推荐指数
1
解决办法
2433
查看次数