python 之 unittest 初探

本贴最后更新于 1594 天前,其中的信息可能已经物是人非
   大家好,我是来自Python自动化13期A组的夜雨声烦,最近几天苦心钻研unittest,终于略有所得,所以想来跟大家分享一下。有关python和unittest的基础知识部分就不在一一细说,相信各位也不是小白了。如果需要我整理基础知识,欢迎留言,我会看情况整理出来。下面直接贴上我的demo模板代码,注释部分主要是思路,有疏漏的地方欢迎大佬们指正。
#!/usr/bin/python3
# -*- coding: utf-8 -*-
# @Time     :2018/12/7 11:03
# @Author   :Yosef-夜雨声烦
# @Email    :wurz529@foxmail.com
# @File:    :model.py
# @Software :PyCharm Community Edition
"""
unittest模块总结:
关于这个模块,可没少让我吃苦头啊。以前自己学习这个模块的时候,就不是很懂,这两天我就一直在钻研这个东西,总算是略有收获。
下面的是我总结的模板,仅供参考。在学习PO模式之后,建议把下面模板分开几个py文件。

做下面demo发现的新问题:不能把断言放到try语句中并且是可以被except的异常类包含的,否则就不能通过断言来设置测试用例的结果。
然后突然想到raise语句,except语句执行完毕之后可以再抛出异常,这样就能被定义为fail
"""
import unittest
import HTMLTestRunner
import time

class TestCases(unittest.TestCase):

    def setUp(self):
        print("每一条case执行之前都会执行这个方法")

    def tearDown(self):
        print("每一条case执行之后都会执行这个方法\n")

    def test_testcase1(self):
        print("这是一条测试用例case1")
        a = "hello"
        try:
            self.assertTrue(a.isalpha())
            print("测试通过")
        except Exception as e:
            print("出错啦,错误结果是%s" % e)
            print("failed")
            raise e

    def test_testcase2(self):
        print("这是一条测试用例case2")
        b = "123"
        try:
            self.assertTrue(b.isalpha())
            print("测试通过")
        except Exception as e:
            print("出错啦,错误结果是%s" % e)
            print("failed")
            raise e

    def test_testcase3(self):
        print("这是一条测试用例case3")
        c = " "
        try:
            self.assertTrue(c.isalpha())
            print("测试通过")
        except Exception as e:
            print("出错啦,错误结果是%s" % e)
            print("failed")
            raise e

'''
if __name__ == "__main__":
    unittest.main()
    写上这段代码可以在命令行直接运行model.py,而且用例全部执行
'''

"""
加载测试用例,方法不仅这种,还有利用loader的方法,大佬们自行试下
loader = unittest.TestLoader()
suite.addTest(loader.loadTestsFromTestCase(TestCases))
or 
suite.addTest(loader.loadTestsFromModule(model))
"""
suite = unittest.TestSuite()
# suite.addTest("test_testcase2")   # 这里我写错了,要加上模块
suite.addTest(TestCases('test_testcase3'))


"""
指定测试报告的路径并且定义报告名称格式
"""
report_dir = "../Test report"
now = time.strftime("%Y-%m-%d %H-%M-%S")
reportname = report_dir + "/" + now + " Test report.html"

"""
运行用例并生成测试报告
"""
with open(reportname, "wb+") as file:
    runner = HTMLTestRunner.HTMLTestRunner(file, 2, title="Model test report",
                                           description="Hello testers! This is the description of Model test"
                                                       "report")
    runner.run(suite)

再次欢迎大家指正!

6 回帖
请输入回帖内容 ...
  • star

    很不错哟,棒棒哒😍

  • ruo0

    我看不懂,完全就是个小白😂 ,谢谢同学分享

  • 88888888

    如果太多不懂的话,我就考虑着把整理一份详细的思路。代码这个东西,重在思路,其他的熟悉就完事了。刚入门python的话,基础要打好哦

  • huahua

    😎 总结完美,不错不错!总算是有所体会!

  • 88888888

    谢谢华华老师的夸奖,哈哈哈

  • 88888888
请输入回帖内容 ...