构造测试套件

举报
bug郭 发表于 2022/11/30 17:02:43 2022/11/30
【摘要】 大家好,我是bug郭,一名双非科班的在校大学生。对C/JAVA、数据结构、Spring系列框架、Linux及MySql、算法等领域感兴趣,喜欢将所学知识写成博客记录下来。 希望该文章对你有所帮助!如果有错误请大佬们指正!共同学习交流作者简介:CSDN java领域新星创作者blog.csdn.net/bug…掘金LV3用户 juejin.cn/user/bug…阿里云社区专家博主,星级博主,...

大家好,我是bug郭,一名双非科班的在校大学生。对C/JAVA、数据结构、Spring系列框架、Linux及MySql、算法等领域感兴趣,喜欢将所学知识写成博客记录下来。 希望该文章对你有所帮助!如果有错误请大佬们指正!共同学习交流

作者简介:

构造测试套件

makeSuite()和TestLoader的应用

  • makeSuite()

unittest框架中提供了makeSuite()方法,makeSuite可以将测试用例类内的测试用例case组成套件TestSuite
unittest调用makeSuite传入类名即可!

  • TestLoader()

TestLoader用于创建类和模块的测试套件,一般的情况下,使TestLoader().loadTestsFromTestCase(TestClass)来加载测试类。

下面就是组织成测试套件的3种方式

import unittest
from unitest_ import test1
from unitest_ import test2
def createsuite():
    # addTest # 向测试套件里添加测试用例!
    # suite = unittest.TestSuite()
    # suite.addTest(unitest_.test1.Baidu1('test_baidu1'))
    # suite.addTest(unitest_.test1.Baidu1('test_baidu2'))
    # suite.addTest(unitest_.test2.test2('test_baidu1'))
    # suite.addTest(unitest_.test2.test2('test_baidu2'))
    # return suite
    # makeSuite 通过addTest()方法,将一个类的的测试用例通过makeSuite添加
    # suite = unittest.TestSuite()
    # suite.addTest(unittest.makeSuite(test1.Baidu1))
    # suite.addTest(unittest.makeSuite(test2.test2))
    # return suite
    #通过TestLoader将测试用例组织成测试套件!
    #先加载
    s1 = unittest.TestLoader().loadTestsFromTestCase(test1.Baidu1)
    s2 = unittest.TestLoader().loadTestsFromTestCase(test2.test2)
    suite = unittest.TestSuite([s1,s2])
    return suite
if __name__=='__main__':
    suit = createsuite()
    runner = unittest.TextTestRunner(verbosity=2)
    runner.run(suit)

上面的3种只能导入一个类,当我们不用一个.py测试类,我们只需要导入一个方法该如何操作呢?

discover()的引用

discover 是通过递归的方式到其子目录中从指定的目录开始, 找到所有测试模块并返回一个包含它们
对象的TestSuite ,然后进行加载与模式匹配唯一的测试文件,discover 参数分别为discover(dir,pattern,top_level_dir=None)

import unittest
from unitest_ import test1
from unitest_ import test2
def createsuite():
    discover = unittest.defaultTestLoader.discover('../test1',pattern='test*.py',top_level_dir=None)
    print(discover)
    return discover
if __name__=='__main__':
    suit = createsuite()
    runner = unittest.TextTestRunner(verbosity=2)
    runner.run(suit)

用例的执行顺序

unittest框架默认加载测试用例的顺序是根据ASCII 码的顺序,数字与字母的顺序为: 0~ 9 ,A~ Z,a~z 。所以,TestAdd 类会优先于TestBdd 类被发现, test_aaa()方法会优先于test_ccc()被执行。对于测试
目录与测试文件来说,unittest框架同样是按照这个规则来加载测试用例。

addTest()方法按照增加顺序来执行

忽略用例执行

我们通过unittest下的一个注解实现测试用例的忽略功能!

@unitest.skip('忽略用例的注释')

在这里插入图片描述

运行结果
在这里插入图片描述
在这里插入图片描述

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。