SUSTechPOINTS 接口修改(python)

使用了SUSTechPOINTS,需要能够通过当前url获取某个参数,并将参数赋值给get_all_scene_desc方法,从而获取这个值,加载到页面中去

仿照我的代码修改,原本的code可以贴到我下面给我看看


params = parse_qs(urlparse(url).query)
param_value = params.get('param', [''])[0]
response = requests.get('<https://sustechpoints.com/api/get_all_scene_desc>', params={'param': param_value})
data = response.json()
print(data)

基于new bing 的编写实现:
可以使用Python中的urllib库和re库来实现获取URL参数并赋值给get_all_scene_desc方法的功能。具体步骤如下:

  • 导入urllib和re库
import urllib.parse
import re

  • 获取当前URL参数的方法
def get_url_param(url, param_name):
    params = urllib.parse.urlparse(url).query
    match = re.search(r'(^|\b)' + param_name + r'=([^&]*)', params)
    if match:
        return match.group(2)
    else:
        return None

该方法接受两个参数:当前URL和需要获取的参数名,返回参数值或者None。

  • 根据获取的参数值调用get_all_scene_desc方法
url = "https://example.com/?param=value"
param_value = get_url_param(url, "param")
if param_value:
    get_all_scene_desc(param_value)

这段代码会将URL中param参数的值"value"传递给get_all_scene_desc方法。

完整的示例代码如下所示:

import urllib.parse
import re

def get_url_param(url, param_name):
    params = urllib.parse.urlparse(url).query
    match = re.search(r'(^|\b)' + param_name + r'=([^&]*)', params)
    if match:
        return match.group(2)
    else:
        return None

url = "https://example.com/?param=value"
param_value = get_url_param(url, "param")
if param_value:
    get_all_scene_desc(param_value)


请将代码中的"url"替换为您实际的URL,并将"param"替换为您需要获取的参数名,然后将get_all_scene_desc方法的调用替换为您实际的调用方法即可。

你好,你需要在SUSTechPOINTS的代码中添加一个新的API接口,用于获取参数并调用get_all_scene_desc方法,然后将结果返回给前端页面显示。可以按照以下步骤进行修改:

在SUSTechPOINTS的代码中添加一个新的API接口,比如get_scene_desc,用于获取参数并调用get_all_scene_desc方法。可以参考已经存在的其他API接口的写法,在API接口的装饰器@app.route中指定接口的路径和请求方法。

在get_scene_desc接口中获取参数,可以使用Flask提供的request.args.get方法获取URL中的参数值。

调用get_all_scene_desc方法,并将获取到的参数传递给该方法作为参数。

将get_all_scene_desc方法的返回值转换成JSON格式,并将其返回给前端页面。

这样就可以实现根据当前URL中的参数值动态加载页面内容了。

基于ChatGPT4与博主叶秋学长的回答,望采纳!!!有其他问题也可以询问我哦💕:
在Python中,获取URL参数的一种常用方法是使用urllib库中的parse模块。以下是一个示例:

from urllib.parse import urlparse, parse_qs

def get_parameter_from_url(url: str, parameter_name: str):
    # 将url解析为六个部分:scheme、netloc、path、params、query和fragment
    parsed_url = urlparse(url)
    # 将query部分解析为一个字典
    parsed_query = parse_qs(parsed_url.query)
    # 返回指定参数的值
    return parsed_query.get(parameter_name, [None])[0]

然后,你可以使用这个函数获取URL中的参数,并将其传递给你的get_all_scene_desc方法:

url = 'http://example.com?param=value'  # 替换为你的实际URL
param_name = 'param'  # 替换为你需要获取的参数名称
param_value = get_parameter_from_url(url, param_name)

get_all_scene_desc(param_value)

然后,你可能需要将结果加载到你的页面中,这将取决于你的具体框架。例如,如果你使用的是Flask,你可能会返回一个包含结果的模板,像这样:

from flask import render_template

@app.route('/')
def index():
    url = 'http://example.com?param=value'  # 替换为你的实际URL
    param_name = 'param'  # 替换为你需要获取的参数名称
    param_value = get_parameter_from_url(url, param_name)

    result = get_all_scene_desc(param_value)

    return render_template('index.html', result=result)

在这个例子中,index.html是一个需要在你的项目中定义的模板,result=result将结果传递给模板,然后在模板中使用。

请注意,这些是通用的Python和Flask示例,你可能需要根据你的实际需求和代码库进行调整。

function getUrlParameter(name) {
  const urlParams = new URLSearchParams(window.location.search);
  return urlParams.get(name);
}

const parameterValue = getUrlParameter('your_parameter_name');
get_all_scene_desc(parameterValue);

请将 'your_parameter_name' 替换为实际您要获取的参数名称。这样,getUrlParameter 函数将返回该参数的对应值,并将其传递给 get_all_scene_desc 方法进行后续处理。


如果想要将 URL 中的参数传入到 Javascript 代码中,可以通过获取 URL 的 search 参数实现。可以通过以下代码获取 URL 中的 search 参数:

```javascript
const queryString = window.location.search;
const urlParams = new URLSearchParams(queryString);
const myParam = urlParams.get('myParam');

其中,'myParam' 是你想要获取的参数名。获取到参数的值后,将该值传入到 get_all_scene_desc 方法即可实现页面中的加载。如果你使用的是 React 等前端框架,则可以将获取到的参数值存储在 state 中,在 render 方法中使用该值进行页面渲染。例如:

import React, { useState, useEffect } from 'react';

const MyComponent = () => {
  const [myParam, setMyParam] = useState(null);

  useEffect(() => {
    const queryString = window.location.search;
    const urlParams = new URLSearchParams(queryString);
    const myParam = urlParams.get('myParam');
    setMyParam(myParam);
  }, []);

  return (
    <div>
      <h1>Hello, {myParam}!</h1>
    </div>
  );
};

export default MyComponent;

上述代码将 URL 中的 'myParam' 参数存储在了组件的 state 中,并在页面中渲染出该值。同时,由于该参数只需要在组件加载时获取一次,因此使用了 useEffect 方法,将获取参数的操作放在了组件加载时执行。

```

接口自动化测试实战二_接口框架修改及用例优化
举个例子

import logging
import unittest
import requests
import json
from common.excel import read_excel
from config import path_config
from unittestreport import ddt, list_data
from config import setting


# 获取数据
data = read_excel(path_config.case_path, "login")

@ddt
class TestLogin(unittest.TestCase):
    @list_data(data)
    def test_login_success(self, case_data):
        print(case_data)
        """
        1、第一步得到响应数据
        2、获取预期结果
        3、预期结果与实际结果的对比
        """
        # 把json格式的字符串转换成字典,避免在读取的时候读取的是字符串而非字典格式
        json_data = json.loads(case_data["data"])
        headers = json.loads(case_data["headers"])
        expect = json.loads(case_data["expected"])
        respon = requests.request(
            method=case_data["method"],
            url=setting.host + case_data["Api_Url"],
            json=json_data,
            headers=headers
        )
        actual = respon.json()
        try:
            self.assertEqual(actual["code"], expect["code"])
            log.info(f"测试用例通过:{case_data}")
        except AssertionError as err:
            log.error(f"测试用例失败:{case_data},错误信息为:{err}")
            # 测试用例失败捕获后,使用raise抛出
            raise err


为你提供一个解析url获取某个参数,并将参数赋值给get_all_scene_desc方法的实现示例代码,可以参考着修改下:

from urllib.parse import urlparse, parse_qs  
  
# 解析URL  
url = "https://example.com/?scene_id=123&scene_name=test"  
parsed_url = urlparse(url)  
  
# 解析查询参数  
query_params = parse_qs(parsed_url.query)  
  
# 获取某个参数的值  
scene_id = query_params.get("scene_id")[0]  
  
# 调用get_all_scene_desc方法并传递参数  
result = get_all_scene_desc(scene_id)  
  
# 将结果加载到页面中  
# TODO: 在页面中显示result的值

可以使用Python中的urllib库来解析URL,获取其中的参数