Python unnitest 测试框架

2020-12-16  本文已影响0人  浪花三朵

unittest核心工作原理

unittest中最核心的四个概念是:test case, test suite, test runner, test fixture。
下面我们分别来解释这四个概念的意思,先来看一张unittest的静态类图:


unnitest

unittest实例

import unittest


class MyTest(unittest.TestCase):
    @classmethod
    def setUpClass(cls):
        print("环境已经准备好,执行所有用例开始")

    @classmethod
    def tearDownClass(cls):
        print("所有用例执行完毕")

    def setUp(self):
        print("start")

    def tearDown(self):
        print("end")

    def test_join(self):
        a = 5 + 1;
        self.assertEqual(a, 6)
        print(a)

    def test_join1(self):
        b = 5 + 2;
        self.assertEqual(b, 7)
        print(b)

    @unittest.skip
    def test_join2(self):
        b = 5 + 2;
        self.assertEqual(b, 10)
        print(b)


if __name__ == "__main__":
    suite = unittest.TestSuite()
    tests = [MyTest("test_join"), MyTest("test_join1")]
    suite.addTests(tests)
    runner = unittest.TextTestRunner()
    runner.run(suite())

import unittest

#from facade.joinquntest import MyTest

# suite = unittest.TestSuite()
# suite.addTest(MyTest("test_join"))
# suite.addTest(MyTest("test_join1"))
# runner = unittest.TextTestRunner()
# runner.run(suite)
suit = unittest.defaultTestLoader.discover("./","join*.py")
runner = unittest.TextTestRunner()
runner.run(suit)

skip装饰器一共有三个 unittest.skip(reason)、unittest.skipIf(condition, reason)、unittest.skipUnless(condition, reason),skip无条件跳过,skipIf当condition为True时跳过,skipUnless当condition为False时跳过。

进阶——用HTMLTestRunner输出漂亮的HTML报告

我们能够输出txt格式的文本执行报告了,但是文本报告太过简陋,是不是想要更加高大上的HTML报告?但unittest自己可没有带HTML报告,我们只能求助于外部的库了。

HTMLTestRunner是一个第三方的unittest HTML报告库,首先我们下载HTMLTestRunner.py,并放到当前目录下,或者你的’C:\Python36\Lib’下

源码附件地址HTMLTestRunner.py

import unittest
from facade.HTMLTestRunner import HTMLTestRunner
import time

cases = unittest.defaultTestLoader.discover("./facade/","join*.py")
nowtime = time.strftime("%Y-%m-%d:%H:%M:%S")
with(open('./reports/'+nowtime+'result.html', 'wb')) as fp:
    runner = HTMLTestRunner(
        stream=fp,
        title='自动化测试',
        description='无其他依赖'
    )
    runner.run(cases,rerun=0,save_last_run=False)

HTMLTestRunner类说明:

stream : 指定报告的路径
title : 报告的标题
description : 报告的描述
run()方法说明:
suit : 运行的测试套件
rerun :重跑次数
save_last_run :是否保存最后一个结果

总结

上一篇下一篇

猜你喜欢

热点阅读