您的位置:首页 > 编程语言 > Python开发

python 测试报告输出 htmltestrunner 中文乱码的解决方式

2017-09-07 17:37 911 查看
python unittest要产生一个可看的报告,需要借助一个第三方的包

下载HTMLTestRunner.py 第三方库 ,参考地址:http://tungwaiyip.info/software/HTMLTestRunner.html

是个牛人自己写的,真挺不错的,佩服佩服

下载后,文件拷贝到python工程的目录里,可以引用到就行

使用:

[python] view
plain copy

 print?

import lib.HTMLTestRunner  

from testDataDriver import Testdriver  

import time  

import sys,os  

reload(sys)  

sys.setdefaultencoding('utf-8')  

  

def htr():  

    runner = lib.HTMLTestRunner  

    runner.run(suite) #自动进行测试  

如果需要指定报告输出的名称和路径,可以按下列方式:

[python] view
plain copy

 print?

def htr():  

    #使用HTMLTestRunner配置参数,输出报告路径、报告标题、描述      

    runner = lib.HTMLTestRunner.HTMLTestRunner(stream=fp,title='API_test_'+str(localtimes),description='Report_description')    

    runner.run(suite) #自动进行测试  

报告显示中文乱码问题的解决方式

输出的报告中可能包含中文,需要确定一下HTMLTestRunner.py源文件的编码方式

首先确认在引用HTMLTestRunner的代码文件中设置编码

[python] view
plain copy

 print?

import sys  

reload(sys)  

sys.setdefaultencoding('utf-8')  

打开HTMLTestRunner.py源文件,找到如下行

[python] view
plain copy

 print?

# o and e should be byte string because they are collected from stdout and stderr?  

        if isinstance(o,str):  

            # TODO: some problem with 'string_escape': it escape \n and mess up formating  

            # uo = unicode(o.encode('string_escape'))  

            #uo = o.decode('latin-1')  

        else:  

            uo = o  

        if isinstance(e,str):  

            # TODO: some problem with 'string_escape': it escape \n and mess up formating  

            # ue = unicode(e.encode('string_escape'))  

            #ue = e.decode('latin-1')  

        else:  

            ue = e  

添加utf-8的解码

[python] view
plain copy

 print?

# o and e should be byte string because they are collected from stdout and stderr?  

        if isinstance(o,str):  

            # TODO: some problem with 'string_escape': it escape \n and mess up formating  

            # uo = unicode(o.encode('string_escape'))  

            #uo = o.decode('latin-1')  

            uo = o.decode('utf-8')  

        else:  

            uo = o  

        if isinstance(e,str):  

            # TODO: some problem with 'string_escape': it escape \n and mess up formating  

            # ue = unicode(e.encode('string_escape'))  

            #ue = e.decode('latin-1')  

            ue = e.decode('utf-8')  

        else:  

            ue = e  

ok,按上述方式,中文乱码问题解决,it works
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: