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)
原文地址:https://www.cnblogs.com/erchun/p/12439195.html