python登录接口封装获取token
时间: 2023-04-09 07:03:39 浏览: 127
可以回答这个问题。Python登录接口封装获取token的方法有很多种,可以使用requests库发送POST请求,传递用户名和密码,获取返回的token。也可以使用selenium模拟登录,获取cookie,再通过cookie获取token。具体实现可以根据具体的需求和接口文档进行编写。
相关问题
python接口登陆封装
以下是一个简单的Python接口登录封装示例,使用requests库进行HTTP请求和BeautifulSoup库处理HTML页面:
```python
import requests
from bs4 import BeautifulSoup
class InterfaceLogin:
def __init__(self, url, username, password):
self.url = url
self.username = username
self.password = password
self.session = requests.Session()
self.logged_in = False
def login(self):
login_page = self.session.get(self.url)
soup = BeautifulSoup(login_page.content, 'html.parser')
csrf_token = soup.find('input', {'name': 'csrf_token'})['value']
payload = {
'csrf_token': csrf_token,
'username': self.username,
'password': self.password
}
response = self.session.post(self.url, data=payload)
self.logged_in = True if self.username in response.text else False
def request(self, method, url, **kwargs):
if not self.logged_in:
self.login()
return self.session.request(method, url, **kwargs)
```
在创建`InterfaceLogin`对象时,需要传入接口登录页面的URL、用户名和密码。`login`方法会使用`requests.Session`对象模拟登录,获取CSRF token和提交登录表单。登录成功后,`logged_in`属性会被设置为`True`。
`request`方法可以接受任意HTTP请求方法和URL,会自动检查是否已经登录,如果没有登录则调用`login`方法。可以通过`**kwargs`传递请求参数,例如headers、params、data等。示例调用:
```python
login = InterfaceLogin('https://example.com/login', 'username', 'password')
response = login.request('get', 'https://example.com/api/data', params={'page': 1})
print(response.json())
```
以上示例会先尝试登录,然后使用GET方法请求`https://example.com/api/data?page=1`,并将返回的JSON数据打印出来。如果登录失败,则会抛出异常。
python接口自动化+request库+pytest框架+PO模式封装实现登录获取token
好的,下面是一个简单的示例代码:
1. 安装依赖库
```
pip install requests
pip install pytest
```
2. 创建项目结构
```
.
├── api
│ ├── __init__.py
│ └── login.py
├── case
│ ├── __init__.py
│ └── test_login.py
├── common
│ ├── __init__.py
│ └── utils.py
└── pytest.ini
```
3. 编写代码
api/login.py
```python
import requests
class LoginApi:
def __init__(self):
self.url = 'http://localhost:8080/api/login'
def login(self, username, password):
payload = {
'username': username,
'password': password
}
response = requests.post(self.url, json=payload)
return response.json().get('data').get('token')
```
common/utils.py
```python
import pytest
from api.login import LoginApi
@pytest.fixture(scope='session')
def token():
api = LoginApi()
return api.login('test', '123456')
```
case/test_login.py
```python
def test_login(token):
assert token is not None
```
4. 运行测试
在项目根目录下运行以下命令:
```
pytest
```
输出结果:
```
============================= test session starts =============================
platform darwin -- Python 3.8.5, pytest-6.2.2, py-1.10.0, pluggy-0.13.1
rootdir: /Users/username/project
collected 1 item
case/test_login.py . [100%]
============================== 1 passed in 0.17s ==============================
```
这样就完成了一个简单的接口自动化测试,并且封装了登录获取 token 的 API 和使用了 pytest 的 fixture 机制。