zoukankan      html  css  js  c++  java
  • TestLoader类中提供的discover()方法

    calculator.py
    class Count:
    def __init__(self,a,b):
    self.a = int(a)
    self.b = int(b)

    #计算加法
    def add(self):
    return self.a + self.b

    #计算减法
    def sub(self):
    return self.a - self.b

    runtest.py

    import unittest
    # 加载测试文件
    import testadd
    import testsub

    # 构造测试集
    suite = unittest.TestSuite()
    suite.addTest(testadd.TestAdd("test_add"))
    suite.addTest(testadd.TestAdd("test_add2"))
    suite.addTest(testsub.TestSub("test_sub"))
    suite.addTest(testsub.TestSub("test_sub2"))
    if __name__ == '__main__':
    # 执行测试
    runner = unittest.TextTestRunner()
    runner.run(suite)

    """
    这样的拆分带来了好处,可以根据不同的功能创建不同的测试文件,甚至是不同的测试目录,
    测试文件中还可以将不同的小功能划分为不同的测试类,在类下编写测试用例,整体结构更加清晰。
    这样的设计看上去很完美,但依然没有解决添加用例的问题,当用例达到成百上千条时,
    在runtest.py文件中通过addTest()添加/删除测试用例就变得非常麻烦,
    那么有没有方法让unitest单元测试框架自动识别测试用例呢?答案是肯定的,
    TestLoader类中提供的discover()方法可以解决这个问题。
    """

    testadd.py

    from calculator import Count
    import unittest
    class TestAdd(unittest.TestCase):
    def setUp(self):
    print("test case start")

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

    def test_add(self):
    j = Count(2,3)
    self.assertEqual(j.add(),5)

    def test_add2(self):
    j = Count(41, 76)
    self.assertEqual(j.add(), 117)

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

    TestLoader类中提供的discover()方法.py

    """
    discover(start_dir,pattern=test*py',top level dir=None)
    找到指定目录下所有测试模块,并可递归查到子目录下的测试模块,只有匹配到文件名才能被加载。
    如果启动的不是顶层目录,那么顶层目录必须单独指定。
    ·start_dir:要测试的模块名或测试用例目录。
    ·patern=-test*.py:表示用例文件名的匹配原则。此处匹配文件名以“test”开头的“.py”类型的文件,
    星号“*”表示任意多个字符。
    ·top_level_dir=None:测试模块的顶层目录,如果没有顶层目录,默认为None。
    现在通过discover()方法重新实现runtest.py文件的功能。
    """

    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),
    并将查找到的测试用例组装到测试套件中,因此,可以直接通过run()方法执行discover,
    大大简化了测试用例的查找与执行。
    """

    testsub.py

    from calculator import Count
    import unittest
    class TestSub(unittest.TestCase):
    def setUp(self):
    print("test case start")

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

    def test_sub(self):
    j = Count(2, 3)
    self.assertEqual(j.sub(),-1)

    def test_sub2(self):
    j = Count(71, 46)
    self.assertEqual(j.sub(),25)

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

     

     

     

     

     
  • 相关阅读:
    过国内外的waf的一些奇淫绝技<转>
    杂七杂八的敏感文件注释<持续更新帖>
    [讨论]“传递式”的攻击思想<转LN>
    无线hacking集合贴,持续更新~
    dede找后台《转》
    开源MFC扩展界面库:Ultimate Toolbox的编译(转)
    【转】Windows环境下设置Tomcat6启动参数
    [转]关于dll文件的生成以及找不到jni.h的解决办法
    VBA 7788
    ODBC连接EXCEL的一些问题
  • 原文地址:https://www.cnblogs.com/zhang-da/p/12210601.html
Copyright © 2011-2022 走看看