zoukankan      html  css  js  c++  java
  • 接口测试基础——第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自动化的时候,代码也容易些啦~~~

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

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

  • 相关阅读:
    java操作生成jar包 和写入jar包
    jboss配置jndi连接池
    windows 域的LDAP查询相关举例
    LDAP error Code 及解决方法
    HDU 6417
    CF1299D Around the World
    codechef Chef and The Colored Grid
    Educational Codeforces Round 82 (Rated for Div. 2)
    CF1237F Balanced Domino Placements
    CF1254E Send Tree to Charlie
  • 原文地址:https://www.cnblogs.com/captainmeng/p/7722314.html
Copyright © 2011-2022 走看看