unittest 框架

unittest:是python自带的一个单元测试框架,也是最基本的单元测试框架,存在在python安装目录下的Lib目录下。

unittest的四个核心概念:

        test case:测试用例

        test fixture:测试夹具

        test runner:测试执行

        test suite:测试套件

unittest的书写规范:

        1.测试文件必须以test开头;

        2.测试类必须继承unittest.TestCase类;

        3.测试类必须以Test开头,如:class TestLogin(unittest.TestCase)

        4.测试方法最好以test开头,如:def test_01_login(self)

        5.在测试的py文件里面去执行代码,必须使用unittest.main()

        6.在测试类里面,可以有普通方法需要被测试方法调用

test fixture 测试夹具:

        方法级别:setUp() 在每一个方法执行之前,执行setUp的代码

                          teardown() 在每一个方法执行之后,执行teardown的代码

        类级别: setUpClass() 在每一个测试类执行之前执行的方法,用@classmethod装饰器来装饰

                     teardownClass() 在每一个测试类执行之后执行的方法,用classmethod装饰器来装饰

        用例执行的顺序:在unittest里,用例执行顺序默认是按照ASCⅡ码的顺序来执行;

                                可以通过给每条用例加上编号,来控制执行的顺序

断言: 判断预期结果与实际结果是否相等

        self.assertEqual(a,b,msg='错误描述') 判断a==b,成立,则通过

        self.assertTrue(x,msg='错误描述')  判单表达式x是否为True,为True则通过

        self.assertIn(a in b,msg='错误描述') 判断a in b 则通过

跳过测试:当某些用例在一些情况下不需要被执行,可以跳过

                当系统更行之后,部分的测试用例失效,但是不确定后面是否还会再改回来,就直接跳过

        装饰器实现跳过测试用例:

                @unittest.skip(原因)  没有条件,直接跳过

                @unittest.skipIf(表达式,原因)  表达式为真,跳过测试

                @unittest.skipunless(表达式,原因)  表达式为假,跳过测试

test suite 测试套件:把需要执行的测试用例放到一个套子里

test runner 测试执行: 使用测试执行值执行套件里的测试用例

添加不同的测试用例:

        suite = unittest.TestCase()

        suite.addTest(测试类('测试方法'))

实例化测试执行:

        runner = unittest.TextTestRunner()

        runner.run(suite)

添加所有的测试用例

        suite = unittest.defaultTestLoader.discover('目录',pattern='测试用例匹配规则')

HTMLTestRunner 第三方插件

生成的报告应该存放在Report里,报告的名字以.html结尾:       

report_path = os.path.dirname(__file__) + '/'
report_name = os.path.dirname(__file__) + now + 'Report.html'
suite = unittest.defaultTestLoader.discover('../Case')
with open(report_name, 'wb') as fq:
    runner = HTMLTestRunnerPlugins.HTMLTestRunner(
        stream=fq,
        verbosity=2,
        title='',
        description='',
        tester=''

    )

    runner.run(suite)

数据驱动

        有的用例只是参数不一样,其他代码完全一样,就可以通过改变测试参数来实现一条用例方法执行多种不同的测试场景,在unittest里使用ddt

列表嵌套列表读取:

                类前面  @ddt.ddt  

                方法前:  @ddt.data(*data_list)

                              @ddt.unpack

列表嵌套字典读取

                类前面 @ddt.ddt

                方法前 @ddt.data(*data_dict)  方法里只用一个参数来接收 data_dict

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值