zl程序教程

您现在的位置是:首页 >  其他

当前栏目

【使用unittest框架】为项目添加测试报告:htmltestrunner_py3

项目框架 添加 unittest 测试报告 使用
2023-09-11 14:17:00 时间

前言

一直想学习自动化测试,但是都没行动,业余时间学习零零碎碎并记录20210418。

 

5、使用unittest框架

  1. unittest框架简介

  2. Unittest中类方法和实例方法

  3. 测试用例和测试套件

  4. 使用unittest重构测试用例

  5. 为项目生产测试报告

 

了解即可,后续会用pytest,实际项目几乎不用到unittest

1、先把这个包下载下来:

链接: https://github.com/huilansame/HTMLTestRunner_PY3

2、Mac,进入到下载目录的

cd /Users/ff/Downloads/HTMLTestRunner_PY3-master

python3 test.py

3、同目录下,生成一份报告,点击查看

4、看下下载下来的test.py代码

import unittest
from HTMLTestRunner_PY3 import HTMLTestRunner


class TestTest(unittest.TestCase):
    """ 测试HTMLTestRunner """
    def setUp(self):
        self.a = 1
        self.b = 2
        self.c = [1, 2, 3]

    def test_a_plus_b(self):
        """ a + b = 3 这个用例应该通过"""
        print('a + b = 3')
        self.assertEqual(self.a+self.b, 3)

    def test_a_minus_b(self):
        """ a - b = 3 这个用例应该失败 """
        print('a - b = 3')
        self.assertEqual(self.a-self.b, 3)

    def test_a_multi_b(self):
        """ a * b = 2 这个用例应该成功"""
        print('a * b = 2')
        self.assertEqual(self.a*self.b, 2)

    def test_a_divide_c(self):
        """ a / c = 1 这是个有subTest的用例"""
        for i in self.c:
            with self.subTest(i=i):
                print('a / c = 1')
                self.assertEqual(self.a / i, 1)

    def test_a_error_case(self):
        """ 除零异常 """
        print('1/0')
        self.assertEqual(self.a/0, 1)


class ExampleCase1(unittest.TestCase):
    """此class包含两个用例:add - ok, minus - FAIL"""
    def setUp(self):
        self.a = 4
        self.b = 3

    def test_add(self):
        """用例1,add,此用例成功通过"""
        self.assertEqual(self.a + self.b, 7)

    def test_minus(self):
        """用例2,minus,此用例执行失败,4-3!=2"""
        print('中文方法反反复复凤飞飞反复')
        self.assertEqual(self.a - self.b, 2)


class ExampleCase2(unittest.TestCase):
    """此class包含一个用例:plus - ERROR"""
    def setUp(self):
        self.a, self.b = 4, 3

    def test_plus(self):
        """用例3,plus,此用例执行出错,因为c未定义"""
        self.assertEqual(self.a * self.b, c)


class ExampleCase3(unittest.TestCase):
    """此class包含一个用例:divide - ok"""
    def setUp(self):
        self.a, self.b = 4, 2

    def test_devide(self):
        """用例4,divide,此用例执行成功"""
        print('我要打印输出')
        self.assertEqual(self.a / self.b, 2)


if __name__ == '__main__':
    report_title = 'Example用例执行报告'
    desc = '用于展示修改样式后的HTMLTestRunner'
    report_file = 'ExampleReport.html'

    testsuite = unittest.TestSuite()
    testsuite.addTest(unittest.TestLoader().loadTestsFromTestCase(TestTest))
    testsuite.addTest(unittest.TestLoader().loadTestsFromTestCase(ExampleCase1))
    testsuite.addTest(unittest.TestLoader().loadTestsFromTestCase(ExampleCase2))
    testsuite.addTest(unittest.TestLoader().loadTestsFromTestCase(ExampleCase3))

    with open(report_file, 'wb') as report:
        runner = HTMLTestRunner(stream=report, title=report_title, description=desc)
        runner.run(testsuite)

4、下载后HTMLTestRunner_PY3.py放到python安装目录/Lib下

1.我的安装目录有点不寻常

这么找安装路径:python3  --->import sys  ----> sys.path

然后拷贝

sudo cp -r HTMLTestRunner_PY3 /Library/Developer/CommandLineTools/Library/Frameworks/Python3.framework/Versions/3.7/lib/python3.7/lib2to3

运用:from lib2to3.HTMLTestRunner_PY3.HTMLTestRunner_PY3 import HTMLTestRunner

2.也可以这样,然后运用:from lib.HTMLTestRunner_PY3.HTMLTestRunner_PY3 import HTMLTestRunner

“永不放弃,总有希望在前面等待!”送给自己,也送给正在阅读文章的博友们~