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:\project\py27_class\py27_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:\project\py27_class\py27_14day"))

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

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

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

 

猜你喜欢

转载自www.cnblogs.com/addicated/p/13194372.html