定义测试用例类:用例类必须继承于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)