zoukankan      html  css  js  c++  java
  • Python之单元测试框架unittest

    创建class继承unittest,每一个测试用例是以test开头的函数,先执行setup,然后用例按照字母的顺序执行,然后执行teardown

    import unittest

    class demo(unittest.TestCase):
        def setup(self):
            print "this is the setup"

        def testb(self):
            print "this is test b"
        def testa(self):
            print "this is test a"

        def teardown(self):
            print "this is the down"

    if __name__ == '__main__':
        unittest.main()

    运行unittest.main即运行所有test开头的用例

    测试集

    控制测试执行顺序,使用测试集,在测试集中添加测试用例的,用例的先后顺序保证测试执行的顺序

    testsuite = unittest.TestSuite()

    testsuite.addTest(demotest("test_toregister"))

    testsuite.addTest(demotest("test_tologin"))

    还可以通过列表添加case

    tests=['test_toregister','test_tologin']

    testsuite=unittest.TestSuite(map(demotest,tests))

    TestLoader是用来加载TestCase到TestSuite中的,其中有几个loadTestsFrom__()方法,就是从各个地方寻找TestCase,创建它们的实例,然后add到TestSuite中,再返回一个TestSuite实例。

    testloader中加载测试的方法:

    loadTestsFromTestCase(testcaseclass)#测试用例的类名
    loadTestsFromModule(module)#存放用例的模块名
    loadTestsFromName(name,module=None)
    #这里的name是使用xx.xx.xx等类型的,如有个一demotest的模块,其中有一个demotestclass的类,下面有多个case,test_one,test_two,使用demotest.demotestclass的话,会加载下面
    的多个case进行测试,使用demotest.demotestclass.test_one的话只加载test_one用例进行测试
    loadTestsFromNames(names,module=None)#names为一系列
    discover( start_dir, pattern='test*.py',top_level_dir=None
    #通过给定的start_dir查找符合pattern的所有测试模块

    TextTestRunner是来执行测试用例的,其中的run(test)会执行TestSuite/TestCase中的run(result)方法。

    测试的结果会保存到TextTestResult实例中,包括运行了多少测试用例,成功了多少,失败了多少等信息。

    suite = unittest.TestLoader().loadTestsFromTestCase(demotest)
    unittest.TextTestRunner(verbosity=2).run(suite)

    如果测试用例不在同一个py文件中,可是使用unittest的makesuit(testcaseclass)来加载
    suit.addTests(unittest.makeSuite(demotestcase))

    控制用例是否执行,使用框架中提供的装饰器,如

    Unittest.skip(“xxx”),如果用例使用了该装饰器,那么该用例将不会被执行而跳过

    unittest.skipIf(),满足括号中条件的话就跳过不执行

    unittest.skipUnless(),满足括号中的条件不跳过,其他情况下跳过

    unittest.expectedFailure(),标记该用例为预期失败的用例,如果在运行过程中失败了,则用例不算失败

    Html测试报告—HTMLTestRunner

    # 确定生成报告的路径

        tm = time.strftime('%d-%H-%M-%S', time.localtime(time.time()))

        filePath = cmd.log_path+"/"+tm+"-pyResult.html"

        fp = file(filePath, 'wb')

    # 生成报告的Title,描述

        runner = HTMLTestRunner.HTMLTestRunner(stream=fp, title='测试报告', description='测试报告')

    runner.run(testsuite)

  • 相关阅读:
    linux 自动重启崩溃的进程
    oracle配置出现的问题
    Castle Nvelocity 循环,条件
    asp.net水晶报表初体验
    关于codesmith中文乱码的解决方法
    ref,out
    DIV覆盖DropDownList解决方案(转)
    xp下设置文件的权限(转)
    关于Godaddy空间存放DotNet网站出现500 Internal server error 错误的总结
    为什么设计师应该学习编写代码
  • 原文地址:https://www.cnblogs.com/hellowcf/p/6958192.html
Copyright © 2011-2022 走看看