给我一个基于python的接口自动化POM模式的模板
时间: 2024-04-05 20:32:08 浏览: 82
基于python编写的appium自动化框架,采用PO模式,并集成了日志以及测试报告通过邮件发送的功能+源代码+文档说明
5星 · 资源好评率100%
好的,以下是基于Python的接口自动化POM模式的模板:
```python
# 导入相关库和模块
import requests
# 创建基础类
class BaseApi(object):
# 定义构造函数
def __init__(self):
self.session = requests.session() # 创建会话对象
self.base_url = "http://api.example.com" # 接口基础 URL
# 定义接口请求方法
def send_api(self, url, method="get", data=None, json=None, **kwargs):
# 组装请求 URL
url = self.base_url + url
# 根据不同请求方法发送请求
if method.lower() == "get":
res = self.session.get(url, params=data, **kwargs)
elif method.lower() == "post":
res = self.session.post(url, data=data, json=json, **kwargs)
else:
raise ValueError("Invalid request method: {}".format(method))
# 返回响应结果
return res.json()
# 创建页面类
class LoginPage(BaseApi):
# 定义页面元素定位器
username_input_loc = ("id", "username")
password_input_loc = ("id", "password")
login_button_loc = ("id", "login-button")
# 定义页面动作或操作方法
def input_username(self, username):
self.session.cookies.clear() # 清除会话 Cookies
self.session.headers.update({"User-Agent": "Mozilla/5.0"}) # 更新请求头部信息
self.session.headers.update({"Referer": "http://www.example.com"}) # 更新请求头部信息
self.session.headers.update({"Accept-Language": "en-US,en;q=0.9,zh-CN;q=0.8,zh;q=0.7"}) # 更新请求头部信息
self.session.headers.update({"Accept-Encoding": "gzip, deflate"}) # 更新请求头部信息
self.session.headers.update({"Connection": "keep-alive"}) # 更新请求头部信息
self.session.headers.update({"Content-Type": "application/x-www-form-urlencoded"}) # 更新请求头部信息
self.session.headers.update({"Upgrade-Insecure-Requests": "1"}) # 更新请求头部信息
self.session.headers.update({"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8"}) # 更新请求头部信息
self.session.headers.update({"Cache-Control": "max-age=0"}) # 更新请求头部信息
self.session.headers.update({"Origin": "http://www.example.com"}) # 更新请求头部信息
self.session.headers.update({"Host": "www.example.com"}) # 更新请求头部信息
self.session.headers.update({"Pragma": "no-cache"}) # 更新请求头部信息
self.session.headers.update({"Referer": "http://www.example.com/login"}) # 更新请求头部信息
self.session.cookies.update({"username": username}) # 更新请求 Cookies
self.session.cookies.update({"password": "password"}) # 更新请求 Cookies
def input_password(self, password):
self.session.cookies.update({"password": password}) # 更新请求 Cookies
def click_login_button(self):
self.send_api("/login", method="post", data=self.session.cookies.get_dict()) # 发送登录请求
# 创建测试类
class TestLoginPage(object):
# 定义测试用例
def test_login_success(self):
login_page = LoginPage()
login_page.input_username("test_user")
login_page.input_password("test_password")
login_page.click_login_button()
# 断言登录成功后的响应结果
assert login_page.send_api("/index")["status"] == "success"
def test_login_fail(self):
login_page = LoginPage()
login_page.input_username("test_user")
login_page.input_password("wrong_password")
login_page.click_login_button()
# 断言登录失败后的响应结果
assert login_page.send_api("/index")["status"] == "fail"
```
以上是一个基于Python的接口自动化POM模式的模板,供你参考。
阅读全文