在我们的团队中,我们定义了大多数测试用例如下:
一个"框架"类ourtcfw.py:
import unittest
class OurTcFw(unittest.TestCase):
def setUp:
# something
# other stuff that we want to use everywhere
Run Code Online (Sandbox Code Playgroud)
还有很多像testMyCase.py这样的测试用例:
import localweather
class MyCase(OurTcFw):
def testItIsSunny(self):
self.assertTrue(localweather.sunny)
def testItIsHot(self):
self.assertTrue(localweather.temperature > 20)
if __name__ == "__main__":
unittest.main()
Run Code Online (Sandbox Code Playgroud)
当我编写新的测试代码并希望经常运行它并节省时间时,我所做的就是将"__"放在所有其他测试之前.但它很麻烦,让我分心我编写的代码,而且这会产生的提交噪音很烦人.
因此,例如在进行更改时testItIsHot(),我希望能够这样做:
$ python testMyCase.py testItIsHot
Run Code Online (Sandbox Code Playgroud)
并unittest运行只 testItIsHot()
我怎样才能做到这一点?
我试图重写这个if __name__ == "__main__":部分,但由于我是Python的新手,我感到很迷茫并且不断抨击除了方法以外的所有其他东西.
请帮助我根据功能的不同来澄清这两个python语句的概念:
sys.exit(0)
os._exit(0)
我正在调查一个主要是UTF-8文件,其中有很多长行.但是,文件并不完全是文本文件,还有一些垃圾.为了找到我的兴趣点,我正在使用hd和grep.
所以在某些时候我知道它对例如0000301a感兴趣,所以我想在Vim中快速打开文件并跳转到那个位置.
示例(实际上是一个很小的文件,这里的位置是0000001c):
me@here:~$ hd file | grep -C 10 \ 00\
00000000 6c 69 6e 65 31 0a 6c 69 6e 65 32 0a 6c 69 6e 65 |line1.line2.line|
00000010 33 0a 6c 69 6e 65 34 0a 6c 69 6e 65 00 35 0a 6c |3.line4.line.5.l|
00000020 69 6e 65 36 0a 6c 69 6e 65 37 0a 6c 69 6e 65 38 |ine6.line7.line8|
00000030 0a 6c 69 6e 65 39 0a 6c 69 …Run Code Online (Sandbox Code Playgroud) 我们知道,Python有对象的布尔值:如果一个类有一个__len__方法,它的每个实例__len__()都会返回0,它将被计算为一个布尔值False(例如,空列表).
实际上,每个可迭代的空自定义对象都被评估为False好像它出现在布尔表达式中.
现在假设我有一个foo属性类bar.我怎样才能定义它的真值,以便它会被评估True if bar % 2 == 0,False否则呢?
例如:
myfoo = foo()
myfoo.bar = 3
def a(myfoo):
if foo:
print "spam"
else:
print "eggs"
Run Code Online (Sandbox Code Playgroud)
所以,a(myfoo)应该打印"eggs".
试图在GNU/Linux上解码base64文件,我得到"base64:无效输入".
$ base64 test.zip | base64 -d > test2.zip
base64: invalid input
$ ll test*
-rw-r--r-- 1 user grp 152 19 11:41 test.zip
-rw-r--r-- 1 user grp 57 19 11:42 test2.zip
Run Code Online (Sandbox Code Playgroud)
我尝试了dos2unix命令,但它没有帮助.
我的base64版本:
$ base64 --version
base64 (GNU coreutils) 5.97
Copyright (C) 2006 Free Software Foundation, Inc.
This is free software. You may redistribute copies of it under the terms of
the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.
There is NO WARRANTY, to the extent permitted by law.
Written …Run Code Online (Sandbox Code Playgroud) 我已经阅读了模块上的perldoc,但是我没有看到有关命名包的建议,因此它不会与内置或CPAN模块/包名冲突.
过去,为了开发本地Session.pm模块,我使用我公司的名称创建了一个本地目录,例如:
package Company::Session;
Run Code Online (Sandbox Code Playgroud)
...和Session.pm可以在目录Company /中找到.
但我不是这个命名惯例的粉丝.我宁愿将包层次结构命名为更接近代码的功能.但这就是CPAN一般的做法......
我觉得我错过了一些基本的东西.我也看过达米安的Perl最佳实践,但我可能没有找到正确的地方......
有关避免包命名空间冲突的任何建议吗?
更新W /相关的问题:如果是一个包名称冲突,如何Perl的选择使用哪一个?感谢大家.
我喜欢在我的cmd.exe脚本中有一个典型的"usage:"行- 如果缺少一个参数,用户可以简单地提醒我们如何使用脚本.
问题是我无法安全地预测潜在用户是否会使用GUI或CLI.如果有人使用GUI在资源管理器窗口中双击此脚本,他们就没有机会阅读任何内容,除非我pause在窗口中.如果他们使用CLI,pause会打扰他们.
所以我正在寻找一种方法来检测它.
@echo off
if _%1_==__ (
echo usage: %nx0: filename
rem now pause or not to pause?
)
Run Code Online (Sandbox Code Playgroud)
有一个很好的解决方案吗?
我试图使用pmap -x命令在Linux x86-64上查看进程的内存映射.看着pmap的输出我很困惑.特别是对于映射动态库的条目.它们有多个条目(实际上它们全部为4个,其中一些条目有3个条目).以下是一个例子
Address Kbytes RSS Dirty Mode Mapping
00000036ca200000 88 64 0 r-x-- libpthread-2.5.so
00000036ca216000 2044 0 0 ----- libpthread-2.5.so
00000036ca415000 4 4 4 r---- libpthread-2.5.so
00000036ca416000 4 4 4 rw--- libpthread-2.5.so
Run Code Online (Sandbox Code Playgroud)
每个库的第二行总是大小为2MB,而没有页面权限.在所有图书馆中,似乎它的RSS始终为零.最后两行也具有相同的大小(基页大小)和相同的权限(少数库没有rw映射).
有人对此有一些解释吗?我有点意识到,带有只读保护的映射可能由加载器完成,以读取库的元数据,而具有可执行权限的部分实际上是库的代码.我可能错了.
但我对这一中间行没有任何线索.没有许可,没有用法?谁在这里有一些智慧的话?
我还看到有几页报告在匿名内存上,没有任何模式位设置.这些代表什么?
我想在当前模式下更改待处理光标的颜色.
这是我到目前为止的代码(.gvimrc).
set gcr=n:blinkon0
set gcr=i:blinkon0
highlight Cursor guifg=white guibg=red
highlight iCursor guifg=white guibg=green
Run Code Online (Sandbox Code Playgroud)
现在光标是灰色的,没有任何变化.运行highlight Cursor guifg=white guibg=red手工作品,但下面不就行了.
我希望插入模式下的颜色为绿色,其他模式下的颜色为红色.