亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

Chinaunix

標(biāo)題: 在python3.X下修改了HTMLTestRunner.py [打印本頁]

作者: qinyiwang    時(shí)間: 2014-09-19 15:31
標(biāo)題: 在python3.X下修改了HTMLTestRunner.py
自己目前在python3.2下使用過HTMLTestRunner,發(fā)現(xiàn)下到的.py是2的語法,不兼容3.X 自己就改了一下,把改動(dòng)的地方發(fā)出來,請(qǐng)大神多指教;

首先在官網(wǎng)下HTMLTestRunner.py 文件,并加入到Lib這個(gè)就不多說了;
修改一:
在python shell里輸入
>>>import HTMLTestRunner
>>> dir(HTMLTestRunner)
發(fā)現(xiàn)不認(rèn)識(shí)StringIO (No module named StringIO),確實(shí)3里面沒有這個(gè)了,第94行引入的名稱要改,改成import io,539行要改成self.outputBuffer = io.BytesIO()

修改二:
運(yùn)行程序的時(shí)候有報(bào)錯(cuò),AttributeError: 'dict' object has no attribute 'has_key'
發(fā)現(xiàn)has_key的又被K掉了,所有到642行去做修改,if not rmap.has_key(cls): 需要換成 if not cls in rmap: (修改的時(shí)候換行、空格等不要改掉原有的格式)

修改三:
運(yùn)行,繼續(xù)有報(bào)錯(cuò):'str' object has no attribute 'decode'
唉,好像是3里面對(duì)字符的操作,decode已經(jīng)拿掉了。定位一下,報(bào)在了772行,ue = e.decode('latin-1'),那么不需要decode操作了吧,直接改成 ue = e ,另外766還有類似的uo = o.decode('latin-1'),可不動(dòng)先留著;

修改四:
繼續(xù)運(yùn)行,發(fā)現(xiàn)還是在糾結(jié)數(shù)據(jù)類型的錯(cuò):
output = saxutils.escape(uo+ue),
TypeError: can't concat bytes to str

bytes和str不能直接連起來,那么778行的內(nèi)容escape(uo+ue) 有一個(gè)處理的“笨辦法”:都改成str,可修改該處內(nèi)容為escape(str(uo)+ue)

修改五:(此處是最后一處改動(dòng)了)
程序已然運(yùn)行大半,但是最后還是有error:
print >>sys.stderr, '\nTime Elapsed: %s' % (self.stopTime-self.startTime)
TypeError: unsupported operand type(s) for >>: 'builtin_function_or_method' and 'RPCProxy'

相信這條很多剛接觸3.x的人都明白, 2和3的print是很不同的,那么在3中,print 后面是不會(huì)跟>> 這樣的,所以到631行,把print的語句修改掉,原來是print >>sys.stderr, '\nTime Elapsed: %s' % (self.stopTime-self.startTime), 可改成 print (sys.stderr, '\nTime Elapsed: %s' % (self.stopTime-self.startTime))

每次修改后都要對(duì)HTMLTestRunner.py 保存一下。

另外在3當(dāng)中,打開本地文件需用   fp = open(filename,'wb'),不要再去用file了;關(guān)閉該文件可用fp.close()

好啦,再試試你的程序吧





歡迎光臨 Chinaunix (http://72891.cn/) Powered by Discuz! X3.2