• python unittest


    组成:TestCase,TestSuite,TestRunner,TestFixture

    TestCase:一个测试用例,一个完整的测试流程

    TestSuite:多个测试用例的集合,可以嵌套

    TestLoader:加载TestCase到TestSuite中

    TextTestRunner:执行测试用例

    关于输出的几点说明:

    1、在第一行给出了每一个用例执行的结果的标识,成功是.,失败是F,出错是E,跳过是S。从上面可以看出,测试的执行跟方法的顺序没有关系,divide方法写在了第4个,但是却在第2个执行。

    2、每个测试方法均以test开头,否则不能被unittest识别

    3、在uniitest.main()中加verbosity参数可以控制输出的错误报告的详细程度,默认是1,如果设为0, 则不输出每一用例的执行结果,即没有上面的结果中的第1行,如果设为2,则输出详细的执行结果,如下所示:

    1、unittest是python自带的单元测试框架,我们可以用其来作为我们自动化测试框架的用例组织执行框架。

    2、unittest的流程:写好TestCase,然后由TestLoader加载TestCase到TestSuite,然后由TextTestRunner来运行TestSuite,运行的结果保存在TextTestResult中,我们通过命令行或者unittest.main()执行时,main会调用TextTestRunner中的run来执行,或者我们可以直接通过TextTestRunner来执行用例。

    3、一个class继承unittest.TestCase即是一个TestCase,其中以 test 开头的方法在load时被加载为一个真正的TestCase。

    4、verbosity参数可以控制执行结果的输出,0 是简单报告、1 是一般报告、2 是详细报告。

    5、可以通过addTest和addTests向suite中添加case或suite,可以用TestLoader的loadTestsFrom__()方法。

    6、用 setUp()、tearDown()、setUpClass()以及 tearDownClass()可以在用例执行前布置环境,以及在用例执行后清理环境

    7、我们可以通过skip,skipIf,skipUnless装饰器跳过某个case,或者用TestCase.skipTest方法。

    8、参数中加stream,可以将报告输出到文件:可以用TextTestRunner输出txt报告,以及可以用HTMLTestRunner输出html报告。

    单函数测试:

    import unittest
    from mydict import Dict
     
     
    class TestDict(unittest.TestCase):
        def test_init(self):
            d = Dict(a=1, b='test')
            self.assertEqual(d.a, 1)  # 判断d.a是否等于1
            self.assertEqual(d.b, 'test')  # 判断d.b是否等于test
            self.assertTrue(isinstance(d, dict))  # 判断d是否是dict类型
     
        def test_key(self):
            d = Dict()
            d['key'] = 'value'
            self.assertEqual(d.key, 'value')
     
        def test_attr(self):
            d = Dict()
            d.key = 'value'
            self.assertTrue('key' in d)
            self.assertEqual(d['key'], 'value')
     
        def test_keyerror(self):
            d = Dict()
            with self.assertRaises(KeyError):  # 通过d['empty']访问不存在的key时,断言会抛出keyerror
                value = d['empty']
     
        def test_attrerror(self):
            d = Dict()
            with self.assertRaises(AttributeError):  # 通过d.empty访问不存在的key时,我们期待抛出AttributeError
                value = d.empty
     
     
    if __name__ == '__main__':
        unittest.main()

    函数顺序测试

    # coding=utf-8
    import unittest
    from test_mathfunc import TestMathFunc
     
    if __name__ == '__main__':
        suite = unittest.TestSuite()
     
        tests = [TestMathFunc("test_add"), TestMathFunc("test_minus"), TestMathFunc("test_divide")]
        suite.addTests(tests)
     
        runner = unittest.TextTestRunner(verbosity=2)
        runner.run(suite)
  • 相关阅读:
    0diff算法参考资料
    js 对象属性值
    一些带有设计模式的优秀代码
    vue 配置多页面
    cms 管理系统
    网络技术:EtherChannel 链路汇聚
    网络技术:VLAN 中继协议(VTP)
    网络管理:管理信息库
    网络管理:抽象语法表示 ASN.1
    网络管理:基本编码规则(BER)
  • 原文地址:https://www.cnblogs.com/supermanwx/p/9964328.html
Copyright © 2020-2023  润新知