zoukankan      html  css  js  c++  java
  • python学习——单元测试unittest

    定义测试用例类:用例类必须继承于unittest.TestCase
    定义测试用例:在测试用例类中,每一个以test开头的方法就是一条用例

    unittest中测试用例执行的顺序:根据方法名按ASCII码进行排序的。
    unittest中会自动根据用例方法执行的时候,是否出现断言异常,来评判用例执行是否通过。

    login.py
    
    def login_check(username=None, password=None):
        """
        登录校验的函数
        :param username: 账号
        :param password:  密码
        :return: dict type
        """
        if username != None and password != None:
            if username == 'python27' and password == 'lemonban':
                return {"code": 0, "msg": "登录成功"}
            else:
                return {"code": 1, "msg": "账号或密码不正确"}
        else:
            return {"code": 1, "msg": "所有的参数不能为空"}
    import unittest
    from py27_14day.login import login_check
    
    
    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)
    
    
    if __name__ == '__main__':
        unittest.main()

    执行测试用例

    01创建并加载测试套件

    方法一:

    # 第一步:创建测试套件
    
    suite = unittest.TestSuite()
    
    
    # 第二步:加载测试用例到测试套件
    
    # 第一种:通过测试用例类去加载
    from py27_14day.testcases import LoginTestCase
    loader = unittest.TestLoader()
    suite.addTest(loader.loadTestsFromTestCase(LoginTestCase))
     
    # 第二种:通过测试用例模块去加载
    # 用例加载器对象
    from py27_14day import testcases
    loader = unittest.TestLoader()
    suite.addTest(loader.loadTestsFromModule(testcases))
    
    # 第三种:通过路径去加载测试用例  :默认去找指定路径中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)

    方法二:**常用

    # 创建套件,加载用例(一行代码的简单写法)
    suite = unittest.defaultTestLoader.discover(r"C:UserszhujiachunDesktoppy27_14day")


    02执行测试套件中的用例

    方法一:

    # 创建测试运行程序
    runner = unittest.TextTestRunner()
    runner.run(suite)

    方法二:

    # 使用BeautifulReport来执行测试套件中的用例,并生成报告
    from BeautifulReport import BeautifulReport
    br = BeautifulReport(suite)
    br.report("第一份测试报告","brreport.html",report_dir=r"C:projectpy27_classpy27_01day")

    方法三:

    # 使用 HTMLTestRunner来生成测试报告
    # suite = unittest.defaultTestLoader.discover(r"C:UserszhujiachunDesktoppy27_14day")
    
    from HTMLTestRunnerNew import HTMLTestRunner
    
    runner = HTMLTestRunner(stream=open("new_report.html","wb"),
                            title="第一份测试报告",
                            tester="2chun",
                            description="第一个版本的测试"
                            )
    runner.run(suite)
  • 相关阅读:
    纪念--
    【csp模拟赛1】铁路网络 (network.cpp)
    【csp模拟赛1】不服来战 (challenge.cpp)
    【csp模拟赛1】T1 心有灵犀
    【luoguP3959 宝藏】-状压DP
    透彻网络流-wfx-最大流
    【luogu2668斗地主】模拟
    【hdu4734】F(x)-数位DP
    【8.27-模拟赛】remove
    清北学堂-济南游记
  • 原文地址:https://www.cnblogs.com/erchun/p/12439195.html
Copyright © 2011-2022 走看看