zoukankan      html  css  js  c++  java
  • unittest用法和report输出

     
    import unittest,time,os
    from lib import HTMLTestRunner_PY3 #需要模板
    def htmlreport():
    reportdir=os.path.dirname(os.path.abspath('.'))+'\report\'
    testdir=os.path.dirname(os.path.abspath('.'))+'\test\'
    suite = unittest.defaultTestLoader.discover(testdir, pattern='test*.py')
    now=time.strftime('%Y-%m-%d',time.localtime(time.time()))
    reportname=reportdir + now + 'report.html'
    with open(reportname, 'wb+') as f : #有中文字要用‘wb’
    runner=HTMLTestRunner_PY3.HTMLTestRunner(stream=f,title='测试报告',description=' Report Details ' , verbosity=2)
    runner.run(suite)

    def textreport():
    reportdir=os.path.dirname(os.path.abspath('.'))+'\report\'
    testdir=os.path.dirname(os.path.abspath('.'))+'\test\'
    suite = unittest.defaultTestLoader.discover(testdir, pattern='test*.py')
    now=time.strftime('%Y-%m-%d',time.localtime(time.time()))
    reportname=reportdir + now + 'report.txt'
    with open(reportname, 'a') as f:
    runner = unittest.TextTestRunner(stream=f, verbosity=2)
    runner.run(suite)
     
    testsuite组织用例

     

    import unittest
    test_dir = './'
    discover = unittest.defaultTestLoader.discover(test_dir,pattern='test*.py')
    if __name__ == '__main__':
        # 执行测试
        runner = unittest.TextTestRunner()
        runner.run(discover)

    discover()方法中参数的意思:

     

    • test_dir:需要加载的单元测试文件的路径。因为我这里 test.py文件和和各个测试用例在同一路径下,所以test_dir = './'。如果不是在同一路径下,就填写绝对路径,

    • 比如我的路径就应该是test_dir = /Users/guxuecheng/Desktop/unittest脚本

    • patten 是一个正则表达式,pattern='test*.py'是指加载所有 test 开头的.py 文件,*表示任意多个字符。

    • discover()方法会自动的根据测试目录(test_dir)匹配查找测试用例文件(test*.py),并将查找到的测试用例组装到测试套件 suite 中,因此可以通过run()方法执行 discover。
    单元测试的重要概念

    1. TestCase

    一个TestCase的实例就是一个测试用例。一个测试用例要包括测试前准备环境的搭建(setUp),执行测试代码(run),以及测试后环境的还原(tearDown)。一个测试用例是一个完整的测试单元,通过运行这个测试单元,可以对某一个功能进行验证。

    2. TestSuite

    对于某一个功能模块的验证可能需要多个测试用例,多个测试用例集合在一起执行验证某一个功能,这样就是一个TestSuite。通过addTest()方法将 TestCase 加载到 TestSuite()中。

    3. TestRunner
    TestRunner可以使用图形界面、文本界面,或返回一个特殊的值等方式来表示测试执行的结果。TextTestRunner提供的 run()方法来执行 test suite/test case。

    4.TestFixture
    一个测试用例环境的搭建和销毁就是一个 fixture。

    • unittest是Python自带的单元测试框架,我们可以用其来作为我们自动化测试框架的用例组织执行框架。
    • unittest的流程:写好TestCase,然后由TestLoader加载TestCase到TestSuite,然后由TextTestRunner来运行TestSuite,运行的结果保存在TextTestResult中,我们通过命令行或者unittest.main()执行时,main会调用TextTestRunner中的run来执行,或者我们可以直接通过TextTestRunner来执行用例。
    • 一个class继承unittest.TestCase即是一个TestCase,其中以 test 开头的方法在load时被加载为一个真正的TestCase。
    • verbosity参数可以控制执行结果的输出,0 是简单报告、1 是一般报告、2 是详细报告。
    • 可以通过addTest和addTests向suite中添加case或suite,可以用TestLoader的loadTestsFrom__()方法。
    • 用 setUp()、tearDown()、setUpClass()以及 tearDownClass()可以在用例执行前布置环境,以及在用例执行后清理环境
    • 我们可以通过skip,skipIf,skipUnless装饰器跳过某个case,或者用TestCase.skipTest方法。
    • 参数中加stream,可以将报告输出到文件:可以用TextTestRunner输出txt报告,以及可以用HTMLTestRunner输出html报告。

    还有不明白请查看以下链接

    来源
    链接:https://www.jianshu.com/p/d877c855b9de

  • 相关阅读:
    C# Timer用法及实例详解
    c#使用MethodInvoker解决跨线程访问控件
    C# 网络通信大小端转换类
    c# 高效的线程安全队列ConcurrentQueue(下) Segment类
    OPTIMIZE TABLE
    TRUNCATE TABLE 与 DELETE table 区别
    mysql 优化
    linux 内核---------董昊 ( Robin Dong ) and OenHan
    Linux内核分析:页回收导致的cpu load瞬间飙高的问题分析与思考--------------蘑菇街技术博客
    google perftools分析程序性能
  • 原文地址:https://www.cnblogs.com/jiaoxiaohui/p/10471311.html
Copyright © 2011-2022 走看看