0


15届蓝桥杯软件测试单元测试专项练习(Python)

1.举重比赛,需要根据性别和体重来决定是否有参赛资格,具体规则如下:

  • 当性别为男且体重大于等于 54 公斤时,可参加男子组比赛,否则无资格参赛。
  • 当性别为女且体重大于等于 46 公斤时,可参加女子组比赛,否则无资格参赛。
  • 当性别既不是男也不是女时,系统显示性别异常。

请使用基本路径覆盖法对被测源代码 Weightlifting 类中的 divide 方法设计单元测试用例,并在 WeightliftingTest 类中完成单元测试代码。

# 本类主要功能描述:
# 1、性别既不是男也不是女,则显示性别异常
# 2、性别为男,体重大于等于54公斤,显示可参加男子组比赛,否则无资格参赛
# 3、性别为女,体重大于等于46公斤,显示可参加女子组比赛,否则无资格参赛

class Weightlifting:
    def divide(sex, weight):
        if sex == '男':
            if weight >= 54:
                return '可以参加男子组比赛'
            else:
                return '无资格参赛'
        elif sex == '女':
            if weight >= 46:
                return '可以参加女子组比赛'
            else:
                return '无资格参赛'
        else:
            return '性别异常'
from weightlifting import Weightlifting

# 单元测试
# 1. 请使用基本路径覆盖法对被测源代码 Weightlifting 类中的 divide 方法设计 5 条单元测试用例。
# 2. 请在下方 WeightliftingTest 类中填写单元测试代码内容。

class WeightliftingTest(unittest.TestCase):

    def test_divide_01(self):
        # TODO 请填写单元测试代码
        self.assertEqual(Weightlifting.divide('男', 67), '可以参加男子组比赛')

    def test_divide_02(self):
        # TODO 请填写单元测试代码
        self.assertEqual(Weightlifting.divide('男', 17), '无资格参赛')

    def test_divide_03(self):
        # TODO 请填写单元测试代码
        self.assertEqual(Weightlifting.divide('女', 57), '可以参加女子组比赛')

    def test_divide_04(self):
        # TODO 请填写单元测试代码
        self.assertEqual(Weightlifting.divide('女', 17), '无资格参赛')  

    def test_divide_05(self):
        # TODO 请填写单元测试代码
        self.assertEqual(Weightlifting.divide('女男', 177), '性别异常')  

if __name__ == '__main__':
    unittest.main()

2.通过输入的 a、b、c 三个整数,对它们进行从小到大的排序,具体规则如下:

  • 当 a 大于等于 b,且 c 大于 a 时,显示 “bac”,若 c 小于 a,且 c 大于 b时,显示 “bca”,否则显示 “cba”;
  • 当 a 小于 b,且 c 大于 b 时,显示 “abc”,若 c 小于 b,且 c 大于 a 时,显示 “acb”,否则显示 “cab”。
  • 请使用基本路径覆盖法对被测源代码 NumberSort 类中的 sort 方法设计单元测试用例。并在 NumberSortTest 类中完成单元测试代码
# 本类主要功能描述:
# 1、当 a 大于等于 b,且 c 大于 a 时,显示 “bac”,若 c 小于 a,且 c 大于 b时,显示 “bca”,否则显示 “cba”;
# 2、当 a 小于 b,且 c 大于 b 时,显示 “abc”,若 c 小于 b,且 c 大于 a 时,显示 “acb”,否则显示 “cab”。

class NumberSort:
  def sort(a, b, c):
    if a >= b:
        return 'bac' if c > a else 'bca' if c > b else 'cba'
    else:
        return 'abc' if c > b else 'acb' if c > a else 'cab'
import unittest
from number_sort import NumberSort

# 单元测试
# 1. 请使用基本路径覆盖法对被测源代码 NumberSort 类中的 sort 方法设计 6 条单元测试用例。
# 2. 请在下方 NumberSortTest 类中填写单元测试代码内容。

class NumberSortTest(unittest.TestCase):

    def test_sort_01(self):
        # TODO 请填写单元测试代码
        self.assertEqual(NumberSort.sort(12, 5, 13), 'bac')

    def test_sort_02(self):
        # TODO 请填写单元测试代码
        self.assertEqual(NumberSort.sort(12, 5, 8), 'bca')

    def test_sort_03(self):
        # TODO 请填写单元测试代码
        self.assertEqual(NumberSort.sort(12, 5, 3), 'cba')
    
    def test_sort_04(self):
        # TODO 请填写单元测试代码
        self.assertEqual(NumberSort.sort(3, 5, 8), 'abc')

    def test_sort_05(self):
        # TODO 请填写单元测试代码
        self.assertEqual(NumberSort.sort(3, 5, 4), 'acb')

    def test_sort_06(self):
        # TODO 请填写单元测试代码
        self.assertEqual(NumberSort.sort(3, 5, 2), 'cab')

if __name__ == '__main__':
    unittest.main()

3.界面获取用户名信息,要求字符串长度必须在 3 ~ 12 位之间,为了显示样式的美观性,根据获取的字符串,以及限定的最小长度(3)和最大长度(12)进行处理,具体规则如下:

  • 字符串不能为 null,否则无法进行处理,因此当为 null 时,返回 “字符串不能为空”。

  • 字符串要求的长度是参数提供的最小长度 ~ 最大长度位,会对获取的字符串进行去除前后空格的处理,当去除空格后长度依然不满足要求时,会返回 “字符串长度必须在最小长度 ~ 最大长度位”。例如:字符串长度必须在3~12位。

  • 对于长度小于最大长度位的字符串,会在字符串后面添加空格补全,直到长度为最大长度位后处理结束,并返回处理后的字符串

  • 请使用简单循环覆盖法的标准要求,对被测源代码 Utils 类中的 stringStyle 方法进行设计单元测试用例。并在 UtilsTest 类中完成单元测试代码。

  • # 本类为工具类,主要功能描述:# 1、字符串不能为 null,否则无法进行处理,因此当为 null 时,返回 “字符串不能为空”。# 2、字符串要求的长度是参数提供的最小长度 ~ 最大长度位,会对获取的字符串进行去除前后空格的处理,当去除空格后长度依然不满足要求时,会返回 “字符串长度必须在最小长度 ~ 最大长度位”。# 3、对于长度小于最大长度位的字符串,会在字符串后面添加空格补全,直到长度为最大长度位后处理结束,并返回处理后的字符串。class Utils: # 对字符串长度进行处理,为达到最大长度时,用空格补全 # @param message 字符串 # @param min 最小长度 # @param max 最大长度 # @return 处理后的信息 def string_style(message, min, max): result = None # 字符串不能为空 if message is not None: # 去除字符串前后空格 message = message.strip() # 获取字符串长度 length = len(message) if min <= length <= max: result = message # 当长度为达到最大长度时,用空格补全 for i in range(max - length): result = result + ' ' else: result = '字符串长度必须在' + str(min) + '~' + str(max) + '位' else: result = '字符串不能为空' return result``````import unittestfrom utils import Utils# 单元测试# 1. 请使用简单循环覆盖法对被测源代码 Utils 类中的 string_style 方法设计 6 条单元测试用例。# 2. 请在下方 UtilsTest 类中填写单元测试代码内容。class UtilsTest(unittest.TestCase): def test_string_style_01(self): # TODO 请填写单元测试代码 self.assertEqual(Utils.string_style(None, 5, 8), '字符串不能为空') def test_string_style_02(self): # TODO 请填写单元测试代码 self.assertEqual(Utils.string_style('ab', 5, 8), '字符串长度必须在5~8位') def test_string_style_03(self): # TODO 请填写单元测试代码 self.assertEqual(Utils.string_style('abcde', 5, 8), 'abcde ') def test_string_style_04(self): # TODO 请填写单元测试代码 self.assertEqual(Utils.string_style('abcdefgh', 5, 8), 'abcdefgh') def test_string_style_05(self): # TODO 请填写单元测试代码 self.assertEqual(Utils.string_style('abcdefghj', 5, 8), '字符串长度必须在5~8位') def test_string_style_06(self): # TODO 请填写单元测试代码 self.assertEqual(Utils.string_style('abcdef', 5, 8), 'abcdef ')if __name__ == '__main__': unittest.main()

  • #循环0次 def test_string_style_01(self): # TODO 请填写单元测试代码 self.assertEqual('abcdefghijkl', Utils.string_style('abcdefghijkl', 3, 12)) #循环1次 def test_string_style_04(self): self.assertEqual('abcdefghijk ', Utils.string_style('abcdefghijk', 3, 12)) #循环2次 def test_string_style_05(self): self.assertEqual('abcdefghij ', Utils.string_style('abcdefghij', 3, 12)) #循环中间次(m) def test_string_style_02(self): self.assertEqual('abcdef ', Utils.string_style('abcdef', 3, 12)) #循环n-1次 def test_string_style_06(self): self.assertEqual('abcd ', Utils.string_style('abcd ', 3, 12)) #循环n次 def test_string_style_03(self): self.assertEqual('abc ', Utils.string_style('abc', 3, 12))原文链接:https://blog.csdn.net/m0_62835291/article/details/136953377

4.某管理系统中,其中一个业务逻辑接口中实现了商品管理模块中的购物车功能,现根据输入的集合列表和商品对象两个参数实现了购物车添加功能,实现逻辑如下:

  • 当向购物车添加商品对象时,购物车集合列表不存在,那么系统会创建购物车集合列表,然后向购物车集合中添加商品信息,并返回商品集合列表。
  • 当购物车集合对象为空时,可直接添加商品对象至集合列表中,然后返回商品集合列表。
  • 当向购物车添加商品对象,而此商品已存在购物车集合对象列表中时,列表中只会对该商品的数量进行叠加,该商品的其他信息不变,完成操作后返回商品集合列表。
  • 当向购物车添加的商品对象,并不存在商品集合列表中,则添加到购物车集合列表中,并返回商品集合列表。
  • 请使用基本路径覆盖法 + 简单循环覆盖法的标准规则,对被测源代码 Goods、GoodsService 类中的 shopping_cart 方法设计单元测试用例。并在 GoodsServiceTest 类中完成单元测试代码,Datas 类中提供了测试数据。
from goods import Goods

# 测试数据
class Datas:
    
    goods_list1 = None
    goods_list2 = []
    g1 = Goods(1, '手机', '华为', 3000, 2)
    g2 = Goods(2, '手机', 'oppo', 2800, 2)
    g3 = Goods(3, '手机', '小米', 1800, 2)
    g4 = Goods(4, '手机', 'vivo', 2600, 2)
    g5 = Goods(5, '手机', '荣耀', 1300, 2)
    g6 = Goods(6, '手机', '华为', 6000, 2)
    g7 = Goods(7, '手机', 'oppo', 3800, 2)
    g8 = Goods(8, '手机', '小米', 2000, 2)
    g9 = Goods(9, '手机', 'vivo', 3100, 2)
    g10 = Goods(10, '手机', '荣耀', 1700, 2)
    goods_list3 = [g1, g2, g3, g4, g5, g6, g7, g8, g9]
# 商品管理模块业务逻辑类,本类主要功能描述:
# 1、当向购物车添加商品对象时,购物车集合列表不存在,那么系统会创建购物车集合列表,然后向购物车集合中添加商品信息,并返回商品集合列表。
# 2、当购物车集合对象为空时,可直接添加商品对象至集合列表中,然后返回商品集合列表。
# 3、当向购物车添加商品对象,而此商品已存在购物车集合对象列表中时,列表中只会对该商品的数量进行叠加,该商品的其他信息不变,完成操作后返回商品集合列表。
# 4、当向购物车添加的商品对象,并不存在商品集合列表中,则添加到购物车集合列表中,并返回商品集合列表。

class GoodsService:
    
    # 商品加入购物车
    # @param list 购物车列表
    # @param goods 商品信息
    # @return 购物车列表
    def shopping_cart(goods_list, goods):
        # 当购物车为 None
        if goods_list is None:
            # 创建购物车并将商品对象存储到集合列表中
            goods_list = [goods]
        else:
            found = False
            for goods1 in goods_list:
                # 当购物车中已存在商品和添加的商品一致时,商品数量进行叠加
                if goods1.id == goods.id:
                    goods1.quantity += goods.quantity
                    found = True
                    break
            # 当添加的商品对象不存在与购物车中时,将商品对象存储到购物车集合列表中
            if not found:
                goods_list += [goods]
        return goods_list
# 商品数据类
class Goods:
    def __init__(self, id, name, type, price, quantity):
        # 商品编号
        self.id = id
        # 商品名称
        self.name = name
        # 商品类型
        self.type = type
        # 商品价格
        self.price = price
        # 商品数量
        self.quantity = quantity
import unittest
from datas import Datas
from goods_service import GoodsService

# 单元测试
# 1. 请使用简单循环覆盖法对被测源代码 Goods 和 GoodsService 类中的 shopping_cart 方法设计单元测试用例。
# 2. 请在下方 GoodsServiceTest 类中填写单元测试代码内容。
# 3. 请使用 Datas 类中提供的集合列表和商品对象的数据进行测试。

class GoodsServiceTest(unittest.TestCase):
    # 当购物车为 None
    def test_shopping_cart_01(self):
        # TODO 请填写单元测试代码
        self.assertEqual(GoodsService.shopping_cart(None, Datas.g1), None)
        
    #循环0次
    def test_shopping_cart_02(self):
        # TODO 请填写单元测试代码
        goods_list2=GoodsService.shopping_cart(Datas.goods_list2, Datas.g1), goods_list1
        self.assertEqual(1, Datas.goods_list2[0].id)
        self.assertEqual(1, Datas.goods_list2[0].quantity)

    #循环1次
    def test_shopping_cart_03(self):
        goods_list3=GoodsService.shopping_cart(Datas.goods_list3,Datas.g1)
        self.assertEqual(1, Datas.goods_list3[0].id)
        self.assertEqual(4, Datas.goods_list3[0].quantity)
    #循环2次
    def test_shopping_cart_04(self):
        goods_list3=GoodsService.shopping_cart(Datas.goods_list3,Datas.g2)
        self.assertEqual(2, Datas.goods_list3[1].id)
        self.assertEqual(4, Datas.goods_list3[1].quantity)
    #循环m次
    def test_shopping_cart_05(self):
        goods_list3=GoodsService.shopping_cart(Datas.goods_list3,Datas.g5)
        self.assertEqual(5, Datas.goods_list3[4].id)
        self.assertEqual(4, Datas.goods_list3[4].quantity)
    #循环n-1次
    def test_shopping_cart_06(self):
        goods_list3=GoodsService.shopping_cart(Datas.goods_list3,Datas.g8)
        self.assertEqual(8, Datas.goods_list3[7].id)
        self.assertEqual(4, Datas.goods_list3[7].quantity)
    #循环n次
    def test_shopping_cart_07(self):
        goods_list3=GoodsService.shopping_cart(Datas.goods_list3,Datas.g9)
        self.assertEqual(9, Datas.goods_list3[8].id)
        self.assertEqual(4, Datas.goods_list3[8].quantity)
    #新增商品在购物车列表不存在
    def test_shopping_cart_08(self):
        goods_list3=GoodsService.shopping_cart(Datas.goods_list3,Datas.g10)
        self.assertEqual(10, Datas.goods_list3[9].id)
        self.assertEqual(2, Datas.goods_list3[9].quantity)

if __name__ == '__main__':
    unittest.main()

原文链接:https://blog.csdn.net/m0_62835291/article/details/136953377

**用法:** assertIsNotNone(testValue, message)

参数: assertIsNotNone()接受以下列出的两个参数并作解释:

  • testValue:将测试变量作为输入值以检查是否与None相等
  • message:作为测试消息失败时显示的消息的字符串语句。

本文转载自: https://blog.csdn.net/2301_76869904/article/details/137168754
版权归原作者 菜的睡不着的小赵 所有, 如有侵权,请联系我们删除。

“15届蓝桥杯软件测试单元测试专项练习(Python)”的评论:

还没有评论