Python用HTMLTestRunner生成html测试报告

一、引入HTMLTestRunner包

  1、下载HTMLTestRunner.py,已上传到网盘,点击下载

  2、将HTMLTestRunner.py复制到python安装目录的Lib文件夹下。或者就放项目下也行,只要能成功import都没问题。

  可能有的人不知道python安装地址的Lib文件夹在哪里。小编用的是mac,放的地址为:/资源库/Frameworks/Python.framework/Versions/3.6/lib/python3.6

  因为看见里面有很多.py结尾的文件,常用到的os.py都在里面,放这里准没错。

 

二、用unittest写测试用例

  具体可参考https://docs.python.org/2/library/unittest.html

 

三、main方法中生成测试报告

import unittest
import HTMLTestRunnerNew
import time,os

class TestLogin(unittest.TestCase):

    def test_aaa(self):
        print("aaa")
        self.assertEqual(1, 2)

    def test_bbb(self):
        print("bbb")

if __name__ == '__main__':
    suite = unittest.TestSuite()  # 实例化一个测试套件
    suite.addTests(unittest.defaultTestLoader.loadTestsFromTestCase(TestLogin))  #加载TestLogin内中的测试用例
    now = time.strftime('%Y-%m-%d %H%M%S')
    
    filename = os.getcwd() + '/testResult_report' + now + '.html' #定义测试报告名称
    with open(filename, 'wb') as f:
        HTMLTestRunner(
            stream=f,  # 测试结果写入的文件
            title=u'登录测试',  # 标题
            description=u'描述内容',  # 描述
            verbosity=2).run(tests)  # 测试结果的描述复杂度;默认1,成功的用例有个".",失败的用例显示F,抛错的用例显示E

其实写好测试方法后就两个步骤:

(1)找到要执行的测试用例;

方法一:loadTestsFromTestCase方法;上面的示例代码,但是要写出具体类的名称,不太方便;

tests1 = unittest.TestLoader().loadTestsFromTestCase(TestLogin)
tests2 = unittest.TestSuite([TestLogin('test_login_success'), TestLogin('test_login_by_phone')])
# 上面两种写法得到的结果tests1和tests2是一样的

方法二:defaultTestLoader.discover方法;获取某目录下符合规则的文件;该方法更灵活;

  例如:获取目录下,test开头的所有py文件中的case;

base_dir = os.path.split(os.path.abspath(__file__))[0]
tests = unittest.defaultTestLoader.discover(base_dir+"/case", pattern='test*.py')

  例如:获取目录下,所有的py文件;只需要把参数修改成pattern='*.py'

方法三:loadTestsFromModule方法;我认为有点复杂了,discover好用一点;

(2)执行HTMLTestRunner的run方法生成报告;

 

四、执行main方法

  注意执行时一定不要右键 Run "Unittests in xxx" 因为这个执行的是上面写的继承自unittest的类,例如我这里就是TestLogin。

  可以试试哦,控制台不会打印出main方法里的print后的语句。

  执行方法见另一篇博客:Python 同一文件中,有unittest不执行“if __name__ == '__main__”,不生成HTMLTestRunner测试报告的解决方案

五、查看html报告

  (1)在项目下可以看见生成的测试报告,后缀为.html

  

  (2)在chrome打开如图:=

 六、HTMLTestRunner/Unittest的缺点

1、skip的用例未体现在测试报告中;

2、没有截图功能;

3、缺少日志功能;

...

 

 

posted @ 2018-09-28 16:45  youreyebows  阅读(1295)  评论(0编辑  收藏  举报