前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >接口测试基础——第6篇unittest模块(二)

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

作者头像
孟船长
发布2018-05-18 18:04:39
7460
发布2018-05-18 18:04:39
举报
文章被收录于专栏:自动化测试实战

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

先写如下用例:

代码语言:javascript
复制
# 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就可以了

第一种方法:

代码语言:javascript
复制
unittest.main()

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

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

第二种方法:

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

代码语言:javascript
复制
suite = unittest.TestLoader().loadTestsFromTestCase(MyTest)
unittest.TextTestRunner(verbosity=2).run(suite)

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

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

第三种方法:

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

代码语言:javascript
复制
testsuit = unittest.TestSuite()
testsuit.addTest(MyTest("test03"))
testsuit.addTest(MyTest("test02"))
runner = unittest.TextTestRunner()
runner.run(testsuit)

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

第四种方法:

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

代码语言:javascript
复制
test_dir = 测试用例路径
report_dir = 测试报告存放路径
test_discover = unittest.defaultTestLoader.discover(test_dir, pattern='test*.py')
runner = unittest.TextTestRunner()
runner.run(test_discover)

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

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

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

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

代码语言:javascript
复制
@unittest.skip('跳过用例的原因')

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

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

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2017-09-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 自动化测试实战 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档