自动化断言、参数化及用例跳过

本文介绍了Python单元测试中的关键概念,包括断言(如assertEqual和assertIn)用于验证预期结果和实际结果的匹配,参数化测试以减少重复代码,以及如何使用unittest.skip和unittest.skipIf进行测试跳过。示例展示了在登录功能测试中如何应用这些技术。
摘要由CSDN通过智能技术生成

一、断言

概念:让程序代替人工自动的判断预期结果和实际结果是否相符。

断言的结果有两种:

1、True,用例通过
2、 False,代码抛出异常,用例不通过

注意:在unittest中使用断言,都需要通过self.断言方法来试验

assertEqual:

self.assertEqua1(预期结果,实际结果),判断预期结果和实际结果是否相等

1,如果相等,用例通过

2.如果不相等,用例不通过,抛出异常

assertln

self.assertIn(预期结果,实际结果),判断预期结果是否包含在实际结果中
1.包含,用例通过
2.不包含,用例不通过,抛出异常

例:

assertIn( " admin ' , 'admin')     >>包含

assertIn( " admin" , 'adminnnnnnnn')    >>包含

assertIn( " admin " , 'aaaaaadmin ')    >>包含

assertIn( " admin " , 'aaaaaadminnnnnnn')    >>包含

assertIn( " admin" , 'addddddmin ')    >>不是包含

from test_login_func import login
import unittest


class TestLogin(unittest.TestCase):

    def test_ok(self):
        self.assertEqual('登录成功', login('admin', '123456'))

    def test_username_error(self):
        self.assertEqual('登录失败', login('root', '123456'))

    def test_password_error(self):
        self.assertEqual('登录失败', login('admin', '123123'))

    def test_all_error(self):
        self.assertEqual('登录失败', login('root', '123123'))

二、参数化

概念:参数化在测试方法中,使用变量来代替具体的测试数据,然后使用传参的方法将测试数据传递给方法的变量。

作用:相似的代码不需要多次书写。


工作中场景:
1.测试数据一般放在json文件中
2.使用代码读取json 文件,提取我们想要的数据--->[0),()]or [[],[]]
安装插件
unittest框架本身是不支持参数化,想要使用参数化,需要安装插件来完成
-联网安装(在cmd窗口安装或者)
pip install parameterized
pip是Python中包(插件)的管理工具,使用这个工具下载安装插件

验证:pip list   >>可以看到有parameterized包,

也可以导包验证,from parameterized import parameterized

参数化代码

步骤:

1.导包unittest/ pa

2.定义测试类

3.书写测试方法(用到的测试数据使用变量代替),如果是列表,列表里面有几组数据就是几条用例,数据和参数要保持一致

4.组织测试数据并传参(装饰器 @)

import unittest
from parameterized import parameterized

from test_login_func import login

data = [('admin', '123456', '登录成功'),
        ('root', '123456', '登录失败'),
        ('admin', '1111156', '登录失败')
        ]


class TestLogin(unittest.TestCase):
    @parameterized.expand(data)
    def test_login(self, username, password, expect):
        self.assertEqual(expect, login(username, password))

三、跳过

概念: 对于一些未完成的或者不满足测试条件的测试函数和测试类,可以跳过执行。

使用方式:

1、直接将测试函数标记成跳过 :@unittest.skip('代码未完成')

2、根据条件判断测试函数是否跳过 ,条件成立就跳过:@unittest.skipIf(condition,reason)

例子:

i = 1

class TestLogin(unittest.TestCase):
    @unittest.skip('未完成')
    def test_ok(self):
        self.assertEqual('登录成功', login('admin', '123456'))
        print('2')

    @unittest.skipIf(i < 2, '无需要执行')
    def test_username_error(self):
        self.assertEqual('登录失败', login('root', '123456'))
        print('1')

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值