由于实践过程中踩过的坑…下面列出正确的操作步骤以此记录,遇到类似问题的童鞋可以看看

1 HTMLTestRunner下载地址

http://tungwaiyip.info/software/HTMLTestRunner_0_8_2/HTMLTestRunner.py

HTMLTestRunner.py复制下来,放在Python目录下的Lib文件下。

注意注意!!!python3版本,这里的HTMLTestRunner文件一定要修改,不然会报错!

2 HTMLTestRunner.py 修改内容如下:

如果你安装的是python2版本,那么不需要做这一步。因为HTMLTestRunner.py 原本就是python2版本,目前还没找到python3版本,所以需要我们自己修改 HTMLTestRunner.py 文件

第94行,将import StringIO修改成import io

第539行,将self.outputBuffer = StringIO.StringIO()修改成self.outputBuffer = io.StringIO()

第642行,将if not rmap.has_key(cls):修改成if not cls in rmap:

第766行,将uo = o.decode(‘latin-1’)修改成uo = e

第772行,将ue = e.decode(‘latin-1’)修改成ue = e

第631行,将print >> sys.stderr, ‘\nTime Elapsed: %s’ % (self.stopTime-self.startTime)修改成print(sys.stderr, ‘\nTime Elapsed: %s’ % (self.stopTime-self.startTime))

其中,Python3中,已经没有StringIO了。取而代之的是io.StringIO。

修改好的HTMLRunner文件见下:
链接: https://pan.baidu.com/s/1o1axwFWS9aeT9lX3zruv3Q
提取码: 427m

3 源代码如下:

1)用例文件代码:

#cding:utf-8
import unittest
import HTMLTestRunner
from base import runmethod
import os
class TestMethod(unittest.TestCase):
    @classmethod
    def setUpClass(cls):
        print("类执行之前的方法")

    @classmethod
    def tearDownClass(cls):
        print("类执行之后的方法")

    #测试方法执行之前
    def setUp(self):
        self.run = runmethod.RunMethod()
        print('test--------setup')
    #测试方法执行后
    def tearDown(self):
        print('test--------tearDown')
    def test_01(self):
        self.token='1111'
         url = "hXXXX"
        method = 'post'
        data = {
            "account": "xxx",
            "password": "xxxx",
            "domainNumber": "xxxx"
        }
        res=self.run.run_main(method,url,data)
        #全局变量
        globals()['token']='1000'

        self.assertEquals(res['code'],200,'测试失败')



    def test_02(self):
        url = "hXXXX"
        method = 'post'
        data = {
            "account": "xxx",
            "password": "xxxx",
            "domainNumber": "xxxx"
        }
        res = self.run.run_main(method, url, data)
        self.assertEquals(res['code'], 200, '测试失败'


2)生成测试报告代码:

#cding:utf-8
import unittest
import HTMLTestRunner
import os
from base.testMethod import *
if __name__ == '__main__':

    # 创建容器
    suite = unittest.TestSuite()
    suite.addTest(TestMethod("test_02"))
    suite.addTest(TestMethod("test_01"))
    # 读写方式打开文件,文件不存在就创建文件
    with open('../report/htmlreport.html','wb') as fp:
        runner=HTMLTestRunner.HTMLTestRunner(
            stream=fp,
            title='测试报告',
            description="只是一个测试",

        )
        runner.run(suite)

注意:测试用例和生成报告代码不能合并,这会导致生成报告代码不生效

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐