• 【python自动化框架搭建】生成单元测试报告详细步骤


    '''
    要求 :
    1、 设计至少五条用例
    
    2、至少用两种方式往测试集合(套件)中添加测试用例
    
    3、执行测试集合(套件)中的测试用例,生成测试报告
    '''
    # 测试的代码
    # 设计用例,对此功能函数进行单元测试
    users = [{'user': 'python23', 'password': '123456'}]
    
    
    def register_test(username, password1, password2):
        # 注册功能
        for user in users:  # 遍历出所有账号,判断账号是否存在
            if username == user['user']:
                # 账号存在
                return {"code": 0, "msg": "该账户已存在"}
        else:
            if password1 != password2:
                # 两次密码不一致
                return {"code": 0, "msg": "两次密码不一致"}
            else:
                # 账号不存在 密码不重复,判断账号密码长度是否在 6-18位之间
                if 6 <= len(username) >= 6 and 6 <= len(password1) <= 18:
                    # 注册账号
                    users.append({'user': username, 'password': password2})
                    return {"code": 1, "msg": "注册成功"}
                else:
                    # 账号密码长度不对,注册失败
                    return {"code": 0, "msg": "账号和密码必须在6-18位之间"}
    # data = ["test_0001", "12345678", "1234567"]
    # result = register_test(*data)
    # print(result)
    
    #  上面已经被注册的账号:python23
    #  入参三个:  账号    密码1  密码2
    #  账号未被注册过,两个密码一样才能注册成功,其他情况都注册失败,对应的结果如下:
    # 注册成功               预期结果:{"code": 1, "msg": "注册成功"}
    # 两次密码不一致         预期结果:{"code": 0, "msg": "两次密码不一致"}
    # 账户已存在             预期结果:{"code": 0, "msg": "该账户已存在"}
    # 密码不在6-18位之间     预期结果:{"code": 0, "msg": "账号和密码必须在6-18位之间"}
    # 编写测试用例
    # 导入unittest模块和注册模块函数
    import unittest
    from Day13_2020_03_04.pack01.homework_practice.register import register_test
    
    class TestRegister(unittest.TestCase):
        """账号注册类"""
        def setUp(self):
            # 每一条测试用例执行之前都会执行
            print("{}开始执行了".format(self))
        def tearDown(self):
            # 每一条测试用例执行之后都会执行
            print("{}执行完了".format(self))
        @classmethod
        def setUpClass(cls):
            # 执行这个测试用例类中的测试用例之前会执行
            print("{}开始执行测试用例类执行完了".format(cls))
        @classmethod
        def tearDownClass(cls):
            # 执行测试用例类全部执行完了,就会执行该方法
            print("{}执行测试用例类全部执行完了,就会执行该方法".format(cls))
        # 注册成功
        def test_register_pass(self):
            # 入参
            data = ["test_0001","12345678","12345678"]
            # 预期结果
            excepted = {"code": 1, "msg": "注册成功"}
            # 第一步:调用功能函数,传入参数(实际结果)
            result = register_test(*data)
            # 对比预期结果和实际结果
            self.assertEqual(excepted, result)
        # 两次输入密码不一致
        def test_register_pwd_different(self):
            # 入参
            data = ["test_0001", "12345678", "1234567"]
            # 预期结果
            excepted = {"code": 0, "msg": "两次密码不一致"}
            # 第一步:调用功能函数,传入参数(实际结果)
            result = register_test(*data)
            # 对比预期结果和实际结果
            self.assertEqual(excepted,result)
        # 账户已存在
        def test_username_already_exists(self):
            # 入参
            data = ["python23", "12345678", "12345678"]
            # 预期结果
            excepted = {"code": 0, "msg": "该账户已存在"}
            # 第一步:调用功能函数,传入参数(实际结果)
            result = register_test(*data)
            # 对比预期结果和实际结果
            self.assertEqual(excepted,result)
        # 密码小于6位
        def test_register_pwd_6(self):
            data = ["test_0002", "12345","12345"]
            # 预期结果
            excepted = {"code": 0, "msg": "账号和密码必须在6-18位之间"}
            # 第一步:调用功能函数,传入参数(实际结果)
            result = register_test(*data)
            # 第二步:比对预期结果和实际结果是否一致
            self.assertEqual(excepted,result)
        # 密码大于18位
        def test_register_pwd_18(self):
            data = ["test_0003", "12345909090990789098","12345909090990789098"]
            # 预期结果
            excepted = {"code": 0, "msg": "账号和密码必须在6-18位之间"}
            # 第一步:调用功能函数,传入参数(实际结果)
            result = register_test(*data)
            # 第二步:比对预期结果和实际结果是否一致
            self.assertEqual(excepted,result)
        # 账号小于6位
        def test_register_username_6(self):
            data = ["test", "12345678", "12345678"]
            # 预期结果
            excepted = {"code": 0, "msg": "账号和密码必须在6-18位之间"}
            # 第一步:调用功能函数,传入参数(实际结果)
            result = register_test(*data)
            # 第二步:比对预期结果和实际结果是否一致
            self.assertEqual(excepted,result)
        # 账号大于18位
        def test_register_username_18(self):
            data = ["test12345909090990789098", "12345678", "12345678"]
            # 预期结果
            excepted = {"code": 0, "msg": "账号和密码必须在6-18位之间"}
            # 第一步:调用功能函数,传入参数(实际结果)
            result = register_test(*data)
            # 第二步:比对预期结果和实际结果是否一致
            self.assertEqual(excepted,result)
        # 账号为空
        def test_register_username_none(self):
            data = [None, "12345678", "12345678"]
            # 预期结果
            excepted = {"code": 0, "msg": "账号和密码必须在6-18位之间"}
            # 第一步:调用功能函数,传入参数(实际结果)
            result = register_test(*data)
            # 第二步:比对预期结果和实际结果是否一致
            self.assertEqual(excepted,result)
        # 密码为空
        def test_register_pws_none(self):
            data = ["test_0004", None, None]
            # 预期结果
            excepted = {"code": 0, "msg": "账号和密码必须在6-18位之间"}
            # 第一步:调用功能函数,传入参数(实际结果)
            result = register_test(*data)
            # 第二步:比对预期结果和实际结果是否一致
            self.assertEqual(excepted,result)
    """
    添加:测试程序启动文件
    第一步:创建一个测试套件(unittest.TestSuite)
    第二步:将测试用例加入到测试套件中
    第三步:创建一个测试运行程序对象(unittest.TextTestRunner)
    第四步:通过运行程序,去执行测试套件中的测试用例
    """
    from HTMLTestRunnerNew import HTMLTestRunner
    import unittest
    from Day13_2020_03_04.pack01.homework_practice import test_register_case
    
    # 创建测试套件对象
    suite = unittest.TestSuite()
    
    # # 第三种方法:将一个模块中的所有测试用例,加载到测试套件
    # loader = unittest.TestLoader()
    # # login_test_case 标黄不影响
    # suite.addTest(loader.loadTestsFromModule(test_register_case))
    
    # 第四种方法:通过一个目录,去导入改目录下的所有模块中的测试用例
    loader = unittest.TestLoader()
    # r防止转义,注意测试用例的模块名称,要以test开头
    suite.addTest(loader.discover(r"D:projectclass23Day13_2020_03_04pack01homework_practice"))
    
    """
    stream:测试文件名字
    verbosity:
    title:报告的标题
    description:相关的描述
    tester:测试人员姓名
    """
    runner = HTMLTestRunner(stream=open("report.html","wb"),
                            verbosity=2,
                            title="python第二份测试报告",
                            description="注册类测试报告",
                            tester="chen")
    # 第四步:通过运行程序,去执行测试套件中的测试用例
    runner.run(suite)

     输出测试HTML报告:

  • 相关阅读:
    爬虫-自动模拟http请求
    iOS开发 - 判断程序第一次开启 以及 应用升级后第一打开的判断
    NSDictionary的几种遍历方法
    算法回顾(三) 二分查找
    以前写的在wp7模拟器测试应用的测试框架
    iOS 应用开发基础翻译 改为 笔记和总结
    算法回顾(二):快速排序
    算法回顾(一):冒泡排序
    iOS 应用中的表视图(Table View)(译)
    预告:iOS 应用开发基础翻译
  • 原文地址:https://www.cnblogs.com/python-test001/p/12420683.html
Copyright © 2020-2023  润新知