• python输出htmltestrunner中文乱码如何解决


    python unittest要产生一个可看的报告,需要借助一个第三方的包
    下载HTMLTestRunner.py 第三方库 ,参考地址:
    http://tungwaiyip.info/software/HTMLTestRunner.html

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

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

    使用:
    代码如下 复制代码

    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) #自动进行测试
    
    如果需要指定报告输出的名称和路径,可以按下列方式:
     代码如下   复制代码
    def htr():
        #使用HTMLTestRunner配置参数,输出报告路径、报告标题、描述    
        runner = lib.HTMLTestRunner.HTMLTestRunner(stream=fp,title='API_test_'+str(localtimes),description='Report_description') 
        runner.run(suite) #自动进行测试

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

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

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

    import sys
    reload(sys)
    sys.setdefaultencoding('utf-8')
    
    打开HTMLTestRunner.py源文件,找到如下行
     代码如下   复制代码
    # 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的解码
    
    # 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

    事在人为,功不唐捐
  • 相关阅读:
    nginx内置变量
    MySQL获取错误编号 try判断 获取 Exception 上的错误
    MySQL错误代码大全(转)
    PHP递归菜单/权限目录(无限极数组)
    PHP魔术方法
    php and和&&的一个坑(文章是发现其他博客,保存自己笔记)
    nginx配置php与前后端分离(文档只供本人观看,接受错误但勿喷!)
    servlet的构造器与init方法
    模板方法设计模式
    MVC
  • 原文地址:https://www.cnblogs.com/xinleishare/p/4403276.html
Copyright © 2020-2023  润新知