05. 集成UnitTest
2024年10月28日大约 2 分钟
05. 集成UnitTest
1. 目前代码存在的问题?
- 代码冗余
- 用例结果断言
- 测试用例的批量执行
- 测试报告生成
2. 回顾Unittest框架
UnitTest 是开发人员用来实现 “单元测试” 的框架。测试工程师,可以在自动化 “测试执行” 时使用。
使用 UnitTest 的好处:
方便管理、维护测试用例。
提供丰富的断言方法。
生成测试报告。(需要插件 HTMLTestReport)
3. 案例
- UnitTest框架管理ihrm登录接口脚本
实现要求:
1.按照功能模块组织测试类,一条测试用例对应一个测试方法
2.添加断言:响应状态码/success/code/message
3.封装测试套件批量执行用例
4.生成测试报告
# login.py
import unittest
import requests
# BASE_URL = 'http://192.168.10.31:58100'
BASE_URL = 'http://ihrm-java.ithiema.net'
# 定义测试类
class TestIhrmLogin(unittest.TestCase):
# 添加测试方法-登录成功
def test01_login_ok(self):
# 发送 post 登录请求,指定 url、请求头、请求体,获取响应结果
resp = requests.post(
url=BASE_URL + "/api/sys/login",
json={"mobile": "13800000002", "password": "123456"}
)
# 打印响应结果
print(resp.json())
# 断言- 响应状态码为 200
self.assertEqual(200, resp.status_code)
# 断言 success 的值为 true
self.assertEqual(True, resp.json().get("success"))
# 断言 code 的值为 10000
self.assertEqual(10000, resp.json().get("code"))
# 断言 message 的值为 操作成功!
self.assertIn("操作成功", resp.json().get("message"))
# 添加测试方法-手机号不存在
def test02_tel_not_exists(self):
# 发送 post 登录请求,指定 url、请求头、请求体,获取响应结果
resp = requests.post(
url=BASE_URL + "/api/sys/login",
json={"mobile": "13808437002", "password": "123456"}
)
# 打印响应结果
print(resp.json())
# 断言- 响应状态码为 200
self.assertEqual(200, resp.status_code)
# 断言 success 的值为 true
self.assertEqual(False, resp.json().get("success"))
# 断言 code 的值为 10000
self.assertEqual(20001, resp.json().get("code"))
# 断言 message 的值为 操作成功!
self.assertIn("用户名或密码错误", resp.json().get("message"))
# 添加测试方法-密码错误
def test03_pwd_err(self):
# 发送 post 登录请求,指定 url、请求头、请求体,获取响应结果
resp = requests.post(
url=BASE_URL + "/api/sys/login",
json={"mobile": "13800000002", "password": "123456789"}
)
# 打印响应结果
print(resp.json())
# 断言- 响应状态码为 200
self.assertEqual(200, resp.status_code)
# 断言 success 的值为 true
self.assertEqual(False, resp.json().get("success"))
# 断言 code 的值为 10000
self.assertEqual(20001, resp.json().get("code"))
# 断言 message 的值为 操作成功!
self.assertIn("用户名或密码错误", resp.json().get("message"))
# run_suite.py
import os.path
import unittest
from htmltestreport import HTMLTestReport
# 创建 suite 实例
from login import TestIhrmLogin
suite = unittest.TestSuite()
# 指定测试类,添加 测试方法
suite.addTest(unittest.makeSuite(TestIhrmLogin))
# 创建 HTMLTestReport 实例
runner = HTMLTestReport(
file_path=os.path.dirname(__file__) + '/测试报告.html',
title="测试报告",
description="v1.1"
)
# 调用 run() 传入 suite
runner.run(suite)