• unittest 用例编写,套件执行


    unittest测试用例类的写法

    定义测试用例类: 用例类必须继承于unittest.TestCase

    定义测试用例: 在测试用例类中,每一个以test开头的方法就是一条用例

    unittest中测试用例执行顺序

    根据方法名按照ASCII码进行排序的

    unittest中会自动根据用例方法执行的时候,是否出现断言异常,来评判用例执行是否通过

    测试用例类书写步骤

    上代码

    class LoginTestCase(unittest.TestCase):
    
        def test_login_pass(self):
            # 第一步:准备用例数据
            # 参数准备
            data = {"username": "python27", "password": "lemonban"}
            # data = ["python27", "lemonban"]
            # user = "python27"
            # pwd = "lemonban"
            # 预期结果准备
            expected = {"code": 0, "msg": "登录成功"}
    
            # 第二步:获取实际结果(调用功能函数,传入参数,获取实际结果)
            res = login_check(**data)
    
            # 第三步:断言(比对预期结果和实际结果)
            # assert expected == res
            self.assertEqual(expected, res)
    
        def test_login_user_error(self):
            # 第一步:准备用例数据
            # 参数准备
            data = {"username": "python8888", "password": "lemonban"}
            expected = {"code": 1, "msg": "账号或密码不正确"}
            # 第二步:获取实际结果(调用功能函数,传入参数,获取实际结果)
            res = login_check(**data)
            # 第三步:断言(比对预期结果和实际结果)
            self.assertEqual(expected, res)
    
        def test_login_pwd_error(self):
            # 第一步:准备用例数据
            # 参数准备
            data = {"username": "python27", "password": "l1111111"}
            expected = {"code": 1, "msg": "账号或密码不正确"}
            # 第二步:获取实际结果(调用功能函数,传入参数,获取实际结果)
            res = login_check(**data)
            # 第三步:断言(比对预期结果和实际结果)
            self.assertEqual(expected, res)
    
        def test_login_pwd_is_none(self):
            # 第一步:准备用例数据
            data = {"username": "python27"}
            expected = {"code": 1, "msg": "所有的参数不能为空"}
            # 第二步:获取实际结果(调用功能函数,传入参数,获取实际结果)
            res = login_check(**data)
            # 第三步:断言(比对预期结果和实际结果)
            self.assertEqual(expected, res)
    
        def test_login_user_is_none(self):
            # 第一步:准备用例数据
            data = {"password": "l1111111"}
            expected = {"code": 1, "msg": "所有的参数不能为空"}
            # 第二步:获取实际结果(调用功能函数,传入参数,获取实际结果)
            res = login_check(**data)
            # 第三步:断言(比对预期结果和实际结果)
            self.assertEqual(expected, res)

    进行测试并生成测试报告汇总

    新编写一个运行入口

    导入unittest,

    第一步创建测试套件

    suite = unittest.TestSuite()

    第二步,加载测试用例到测试套件内

    这里有几种加载方法

    此方法需要借助unittest.TestLoadder()loader = unittest.TestLoader()   # 实例化TestLoader得到loader对象
    suite.addTest(loader.loadTestFromTestCase(LoginTestCase)

    第三步,执行测试套件中的用例

     # 创建测试运行程序
    runner = unittest.TextTestRunner()
    # 调用unittest下TextTestRunner()方法,返回runner对象。
    runner.run(suite)  # 调用runner对象中的run方法、这种方式不会产生报告
    # 会在控制台输出测试结果

    第四步,生成测试报告,

    本章记录两种生成测试报告的方式。

    使用beautifulReport来执行测试套件中的用例并执行

    # from BeautifulReport import BeautifulReport
    # br = BeautifulReport(suite)
    # br.report("27期第一份测试报告",
                    "brreport.html",
                    report_dir=r"C:projectpy27_classpy27_01day")
     # 参数解释,
     # param1:生成报告的title(就是浏览器查看是tab栏的名字)
     # param2: 生成的本地报告文件名
     # param3: 生成本地报告文件存储路径  

    使用HTMLTestRunner来生成测试报告

    # 使用 HTMLTestRunner来生成测试报告
    # from HTMLTestRunnerNew import HTMLTestRunner
    #
    # runner = HTMLTestRunner(stream=open("new_report.html","wb"),
    #                         title="27期第一份测试报告",
    #                         tester="adiicated",
    #                         description="第一个版本的测试"
    #                         )
    # runner.run(suite)
    # 参数参照上面对比理解,不过多解释

    测试用例加载方法的点

    第一种,通过测试用例类加载

    第二种,通过测试用例模块去加载

    # from py27_14day import testcases
    # loader = unittest.TestLoader()
    # suite.addTest(loader.loadTestsFromModule(testcases)) 
    # testcase 为模块名

    第三种,通过路径去加载测试用例 默认会去找指定路径中test开头的模块中的测试用例

    # loader = unittest.TestLoader()
    # suite.addTest(loader.discover(r"C:projectpy27_classpy27_14day"))

    # 实际运用中此种方法最为常见

    第四种,一条一条的去加载

    # from py27_14day.testcases import LoginTestCase
    # case1 = LoginTestCase("test_login_pass")
    # suite.addTest(case1)

     

  • 相关阅读:
    自动化测试面试题及答案
    Jmeter读取CSV数据显示EOF问题
    C++中类继承public,protected和private关键字作用详解及派生类的访问权限
    汇编实验:寻址方式在数据访问中的应用
    集成运放综合应用的仿真模拟
    集成运算放大电路线性区运用的仿真实验
    共射/共源放大电路的仿真实验
    二极管特性的仿真实验
    各主流排序算法详细介绍(时间/空间复杂度,适用范围和稳定性)
    三大自由之二 部分
  • 原文地址:https://www.cnblogs.com/addicated/p/13194372.html
Copyright © 2020-2023  润新知