• 接口测试基础——第6篇unittest模块(二)


    通过上次的运行,大家应该已经发现了,就是我们写了三个用例,那么在测试报告中setUp和tearDown方法分别运行了三次。没错,这也就是说,每次运行用例之前都会运行setUp和tearDown方法。今天我们就来具体的说一下unittest模块是如何运行所有的用例的:

    先写如下用例:

    # coding: utf-8
    import unittest
    import time
    class MyTest(unittest.TestCase):
        def setUp(self):
            print "SetUp"
            time.sleep(2)
        def tearDown(self):
            print "teardown"
            time.sleep(2)
        def test01(self):
            print "test01"
        def test03(self):
            print "test03"
        def test02(self):
            print "test02"
    if __name__ == '__main__':
        pass
    

    上面有三个用例,他们是按什么顺序运行的?又是如何一次运行三个用例呢?

    大家只需要把下面的的方法替换if __name__ == '__main__':下面的pass就可以了

    第一种方法:

    unittest.main()
    

    替换以后运行就可以看到如下输出:

    首先我们可以看到运行的顺序是test01->test02->test03的顺序,也就是说运行是有顺序的;其次,可以看到下面框起来的点,点表示成功,F表示失败,E表示报错。

    第二种方法:

    通过测试套件,加载全部的测试用例,然后运行

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

    这里的verbosity=2作用是打印的时候会将对应的用例名字同时打印出来,这样看起来会很方便~~~

    注意,此时你运行时光标一定要在if的下面,这样才会运行全部用例,如果你把光标放在任意用例上,那么只会运行那一个用例。

    第三种方法:

    同样是通过测试套件来运行:

    testsuit = unittest.TestSuite()
    testsuit.addTest(MyTest("test03"))
    testsuit.addTest(MyTest("test02"))
    runner = unittest.TextTestRunner()
    runner.run(testsuit)
    

    这种方式的特点是只有你addTest写了用例名,那么运行的时候才会去运行,像上面我只加载了test03和test02两个用例,那么在运行时就只会运行这两个用例了。

    第四种方法:

    加载固定测试用例文件中的用例

    test_dir = 测试用例路径
    report_dir = 测试报告存放路径
    test_discover = unittest.defaultTestLoader.discover(test_dir, pattern='test*.py')
    runner = unittest.TextTestRunner()
    runner.run(test_discover)
    

    这种方法是不是很眼熟?是的,这就是上一次我们用过的方式,只不过我们上次不仅运行了用例,还将其作为邮件发出去了。

    以上就是加载测试用例常用的方法了。

    还需要了解的是跳过测试用例的方法:

    如果你既想一下运行所有用例,又想跳过一些不想跑的用例,那你就需要这句话了,

    @unittest.skip('跳过用例的原因')

    只要在不想运行的用例上面加上这句话,那么对应的用例就不会运行啦。这种方式叫做装饰器,有时间我会考虑专门的和大家说一下装饰器。因为有时候我们不想每次用例执行前都运行setUp和tearDown方法~~这个后面再说

    需要注意的是,unittest模块(框架)用途还是非常多的,最常用的地方在小编看来其实是UI自动化Selenium。只要掌握了以上只是,在运行UI自动化的时候,代码也容易些啦~~~

    微信公众号搜索“自动化测试实战”或扫描下方二维码添加关注~~~

    还请大家多多提意见,我们慢慢来,重要的是学会~~~如果你觉得对你有帮助,也欢迎大家转发,船长先谢谢各位啦~~~

  • 相关阅读:
    jQuery火箭图标返回顶部代码
    jQuery火箭图标返回顶部代码
    jQuery火箭图标返回顶部代码
    jQuery火箭图标返回顶部代码
    jQuery火箭图标返回顶部代码
    jQuery火箭图标返回顶部代码
    jQuery火箭图标返回顶部代码
    jQuery火箭图标返回顶部代码
    别傻傻不知道 == 和 equals 的区别【面试系列】
    Spring Boot(九):定时任务
  • 原文地址:https://www.cnblogs.com/captainmeng/p/7722314.html
Copyright © 2020-2023  润新知