1、批量执行,1次登陆
import configparser
import os
import requests
from lib.common.config_operate import read_ini_config
from loguru import logger
def get_config_value(key1,key2):
"""
读取config文件的取值
:param key1: config文件的分类名字,比如 [Host]
:param key2: config文件的分类下的变量名字,比如 default_host
:return: 文件值
"""
pro_dir = os.path.dirname(os.path.dirname(os.path.dirname(__file__)))
config_path = os.path.join(pro_dir, "config.ini")
config = configparser.ConfigParser()
config.read_file(open(config_path, encoding="utf-8"))
value = config.get(key1, key2)
return value
login_info = {}
def get_login_info(role, key):
"""
返回不同登陆角色的 token,一个线程里,只需要登陆一次即可。
获取token值,例如:get_login_info("expert_001", "token"),
其中配置文件大概内容如下:
[Host]
default_host=https://xxx.com
eu_test_host=https://xxxx.com
[Login]
expert_001_account=123
expert_001_password=123
:param role: config.ini文件中 [Login] 下的 role_account,role_password。
:param key: key是登陆后的response里面的键,我们这里取的是 token
:return: 返回 token 值
"""
requests.DEFAULT_RETRIES = 5
s = requests.session()
s.keep_alive = False
if f'{role}_account' in login_info:
return login_info[f'{role}_account'][key]
url = get_config_value('Host', 'default_host') + '/api/base-uc-app/portal/login'
body = {
"account": get_config_value('Login', f'{role}_account'),
"password": get_config_value('Login', f'{role}_password'),
}
with s.post(url=url, json=body) as response:
response_json = response.json()
if response_json['code'] == 200:
login_info[f'{role}_account'] = response_json['data']
return response_json['data'][key]
if __name__ == '__main__':
a = get_login_info("expert_001", "token")
print(a)
b = get_login_info("expert_001", "token")
print(b)
2、config.ini配置文件
[Host]
default_host=https://xxx.com
eu_test_host=https://xxxx.com
[Login]
expert_001_account=123
expert_001_password=123456
[Header]
accept-language=en-US
[Version]
tech_app_version=V2.10.16