接口测试框架的结果说明
- API 用于封装被测系统的接力
- TestCase 讲一个或者多个接口封装程测试用例,并使用Unittest管理测试用例,TestCase 可以调用数据库进行数据的校验
- 为了方便维护测试数据,可以把测试脚本和数据分离开
- 通过UniitTest断言接口返回的数据,并生成测试报告
框架目录结构
api Testframework 项目名称
-- api package: 定义封装成被测系统的接口
-- scrip package: 定义测试用例脚本
-- data dir: 存放测试数据
-- report dir: 存放生成的测试报告
-- lib pakeage: 存放第三方的文件
-- app.py 定义的项目的配置信息
-- utils.py 定义工具类
-- run_suite.py 执行测试套件的入口
封装TPShop登录接口案例
按照功能模块定义封装被测试系统的接口,方便测试脚本的调用,并且能够
迭代代码的复用,对登录功能的相关接口进行封装
class LoginAPI(object):
# 初始化
def __init__(self):
self.verify_code_url = 'xxx'
self.login_url = 'yyyy'
# 登录过程
# 1.获取验证码
# 2.填写必要数据:用户名,密码,验证码
# 3.点击登录按钮
def get_login_verify_code(self,session):
return session.get(self.verify_code_url)
def login(self,session,username,password,verify_code):
data = {
'username':username,
'password':password,
'verify_code':verify_code
}
return session.post(url=self.login_url,data=data)
登录测试用例
将api 模块中的一个或者多个接口封装成一个测试用例,并使用测试框架
UnitTest管理测试用例,定义登录功能的测试用例
import unittest
from api.login import LoginAPI
from requests import Session
class Login_Test(unittest.TestCase):
@classmethod
def setUpClass(cls) -> None:
cls.login_api = LoginAPI()
def setUp(self) -> None:
self.session = Session()
def tearDown(self) -> None:
self.session.close()
def test_login_success(self):
# 请求验证码
response = self.login_api.get_login_verify_code(self.session)
self.assertIn("image",response.headers.get('Content-Type'))
# 验证码识别 略 8888
# 调用登录方法,发送请求,获取响应数据
res = self.login_api.login(self.session,'13800000002','123456','8888')
res = res.json()
# 断言
self.assertEqual(200,res.status_code)
self.assertEqual(1,res.get('status'))
self.assertEqual('登录成功',res.get('msg'))
集成测试报告
使用HTMLTestRunner生成HTML格式的测试报告
注意: 需要将HTMLTestRunner.py 工具放置在lib中
import unittest
from HTMLTestRunner import HTMLTestRunner
from scripts import Test_login
suite = unittest.TestSuite()
suite.addTest(Test_login.Login_Test('test_login_success'))
f = open('./report/report.html','wb')
runner = HTMLTestRunner(stream=f,title='ojbk',description='黑娃')
runner.run(suite)


