目录
前言:
一、整体框架介绍
二、代码实现
1. config文件配置
2. API封装方法实现
3. 测试用例编写
4. 运行测试用例
三、总结
前言:
在接口自动化测试中,我们都知道一个重要概念就是接口请求封装,可以大幅度提供自动化测试效率,避免了因为请求信息不完整导致的异常请求响应。本文将分享如何利用Python实现这一目标。
一、整体框架介绍
本次项目主要使用Python+requests实现自动化测试的接口请求封装,架构如下:
1. project folder
- common
- config
- logs
- report
- testcases(测试用例)
- api(接口封装调用)
2. common folder (常用方法封装)
- logger.py (封装运行日志)
- read_config.py (封装配置文件读取)
- read_excel.py (封装Excel读取)
- write_excel.py (封装Excel写入)
- handle_path.py (封装常用路径地址)
3. config folder (封装配置信息)
- config.ini (封装配置)
4. testcases folder (放测试用例)
- test_login.py
- test_register.py
5. api folder (封装具体接口请求方法)
- login_api.py
- register_api.py
这是一个比较常见的自动化测试框架架构,项目结构比较清晰,方便后期维护和功能扩展,其中common文件夹主要用于封装一些项目中常用的方法,config文件夹封装配置信息等。
二、代码实现
1. config文件配置
在config.ini文件保存以下配置信息:
[api]
# 定义不同环境接口地址,本次以演示环境和测试环境为例
base_url_demo = http://api.demo.com
base_url_test = http://api.test.com
# 登录接口配置信息
login_url = /api/v1/login
login_username = test
login_password = 123456
# 注册接口配置信息
register_url = /api/v1/register
register_username = test
register_password = 123456
# cookie配置信息
cookie_name = session_id
2. API封装方法实现
接下来,我们需要对每个接口编写具体的请求方法,以登录接口为例:
# login_api.py
import requests
from common.read_config import ReadConfig
class LoginApi(object):
def __init__(self):
self.rc = ReadConfig()
self.base_url = self.rc.get_base_url()
def login(self, username=None, password=None):
url = self.base_url + self.rc.get_login_url()
headers = {"Content-Type": "application/json"}
json_data = {"username": self.rc.get_login_username(),
"password": self.rc.get_login_password()}
response = requests.post(url=url, headers=headers, json=json_data)
return response.cookies.get(self.rc.get_cookie_name())
在以上代码中,我们根据配置文件中的信息获取接口的地址、请求头、请求数据等信息,将请求过程封装到了一个login方法中,并返回cookie信息。同时,我们也能轻松地扩展其他接口请求方法。
3. 测试用例编写
接下来我们用test_login.py文件实现一个登录的测试用例:
# test_login.py
import unittest
from api.login_api import LoginApi
class TestLogin(unittest.TestCase):
def setUp(self):
self.api = LoginApi()
def test_login(self):
session_id = self.api.login()
self.assertIsNotNone(session_id, "登录失败")
# 登录成功后的操作
def tearDown(self):
pass
在以上测试用例代码中,我们先通过setUp()方法获取LoginApi对象并实例化。然后我们编写了一个test_login()方法,该方法首先通过login()方法获取cookie信息。如果获取成功则通过断言判断登录是否成功,如果不成功则会输出"登录失败"的提示信息。
4. 运行测试用例
接下来在项目根路径下执行以下命令,即可运行所有测试用例:
python -m unittest discover -s testcases -p "test_*.py" -v
其中,-m表示执行模块,unittest表示执行Python自带的unittest测试框架,discover表示自动查找测试用例文件,-s指定测试文件的路径,-p表示测试文件的匹配模式,-v表示执行时输出详细信息。
执行完毕后,我们可以在终端中看到测试结果及日志信息。
三、总结
本次分享了一个接口自动化测试框架的封装实战,主要实现了自动化测试的接口请求封装。封装接口请求方法可以避免代码重复,提高代码复用率和可维护性,同时也能大幅提高自动化测试效率。接口自动化测试需要发起http请求,requests库为我们提供了非常便捷的API,通过requests封装,可以提高我们的开发效率,减少开发时间成本。
作为一位过来人也是希望大家少走一些弯路,在这里我给大家分享一些自动化测试的学习资源,如果你用得到的话可以直接拿走,希望能对你带来帮助。(包括Python编程、WEB自动化测试、app自动化测试、接口自动化测试、持续集成、自动化测试开发、性能测试、安全测试、大厂面试真题、简历模板等等),相信能使你更好的进步!
获取方式:留言【自动化测试学习】即可免费获取
【自动化测试交流】:574737577(进群备注ccc)http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=5Yy1aF4jOfrqXFA_eg14oG9EZ5fFbv5A&authKey=zYx3Zivwu55NOCM%2B%2BKqaZjoeTRS5xMdAmfqX%2FyzUm4lvrD4q75P5Ukeg%2FPBRMMbm&noverify=0&group_code=574737577