httprunner_debugtalk.py示例:获取各路token

第一种策略:
登录的token,可以从单独写个用例,登录里面包含了所有需要用到的接口的token,然后其他用例调用登录,然后利用脚本间传参,传入token即可解决,但是,要符合以下内容顺序:
1、测试前置:调用其他用例准备测试数据,用例1,用例2,用例3,因为用例间都保证的单独运行不报错,所以不用担心用例间的各种关联问题。
2、调用登录用例
3、调用你要验证的接口。

第二种策略:
在debug中写入token,因为httprunenr是基于requests.session去执行的,所以后续用例不再需要调用登录,只需要传入所需要的token即可。
debug_talk.py优化下登录:

import pytest
import requests
from bs4 import BeautifulSoup

@pytest.fixture(autouse=True)
def get_token(index):
    s = requests.Session()
    r1 = ss.get(url = "xxx", verify=False)
    execution = BeautifulSoup(res.text, "lxml").find(attrs={
    
    "name":"execution"})["value"]
    r2 = s.post(url='http://xxx', data=f'admin: "$admin", passwd:"$passwd", excute:{
      
      execution}')
    r3 = s.post(url="http://xxx", data="xxx")
    r4 = s.post(url="http://xxx", data="xxx")
    token_cosmosgis = r2.text
    token_fusgis = r3.text
    token_genex = r4.text
    token = (token_cosmosgis, token_fusgis, token_genex)
    return token[index]

if __name__ == '__main__':
    get_token()

0607优化的最终结果,避免了调用登录用例:

import requests
from bs4 import BeautifulSoup
from pathlib import Path

def get_token(index):
	# 从.env获取值
	file = Path("./.env").open()
	host = [i for i in file][-1].split("=")[1]
	name = [i for i in file][1].split("=")[1].strip()
	password = [i for i in file][1].split("=")[2].strip()
	# 以临时会话session的形式登录
	s = requests.session()
	data = {
    
    
			"username": admin, 
			"password": password, 
			"excution": BeautifulSoup(s.get().text, "lxml").find(attrs={
    
    "name":"excution"})["value"],
			"_evxxx": "xxx",
			"submit": "登录",
			}
	s.post(url=f"{
      
      host}/cas/login", data=data, verify=False)
	# 登录后开始获取各种token
	fxxxgis = s.get(f"{
      
      host}/fxxxgis/csrftoken.do").json().get("_csrf")
	cxxxgis = s.get(f"{
      
      host}/cxxxgis/csrftoken.do").json().get("_csrf")
	li = [fxxxgis, cxxxgis]
	return li[index]

if "__name__" == "__main__":
	a = get_token(0)
	print(a)

猜你喜欢

转载自blog.csdn.net/weixin_45451320/article/details/117339174