yj
2026-03-31 4becf7b5eba5de2d9889f379eb88aeb6cb16f760
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
import requests
import time
 
 
# API的基础URL
BASE_URL = "http://localhost:9676/api/v1"
 
def test_delete_content():
    """测试删除Content的API端点"""
    print("测试删除Content API端点...")
 
    try:
        # 首先添加一个测试内容
        print("1. 添加测试内容...")
        content_type_response = requests.get(f"{BASE_URL}/type/get?code=FAQ")
        if content_type_response.status_code == 200:
            content_type_data = content_type_response.json()
            if content_type_data["count"] > 0:
                content_type_id = content_type_data["data"][0]["id"]
                
                # 添加测试内容
                test_content = {
                    "type": content_type_id,
                    "question": "测试删除功能的问题",
                    "answer": "测试删除功能的答案"
                }
                
                save_response = requests.post(f"{BASE_URL}/content/save", json=test_content)
                if save_response.status_code == 201:
                    save_data = save_response.json()
                    content_id = save_data['saved'][0]['id']
                    print(f"   添加的内容ID: {content_id}")
                    
                    # 现在测试删除
                    print("2. 测试删除功能...")
                    delete_response = requests.delete(f"{BASE_URL}/content/delete", 
                                                     json={"id": content_id})
                    print(f"   删除响应状态码: {delete_response.status_code}")
                    print(f"   删除响应正文: {delete_response.text}")
                    
                    # 验证内容是否真的被删除了
                    print("3. 验证内容是否被删除...")
                    get_response = requests.get(f"{BASE_URL}/content/get?id={content_id}")
                    print(f"   获取已删除内容的响应状态码: {get_response.status_code}")
                    print(f"   获取已删除内容的响应正文: {get_response.text}")
                    
                    return True
                else:
                    print(f"   添加测试内容失败: {save_response.text}")
                    return False
            else:
                print("   没有找到FAQ类型")
                return False
        else:
            print(f"   获取类型失败: {content_type_response.text}")
            return False
    except Exception as e:
        print(f"   测试删除功能时出错: {e}")
        return False
 
 
def test_delete_content_by_url_param():
    """测试通过URL参数删除Content的API端点"""
    print("\n测试通过URL参数删除Content API端点...")
 
    try:
        # 首先添加一个测试内容
        print("1. 添加测试内容...")
        content_type_response = requests.get(f"{BASE_URL}/type/get?code=FAQ")
        if content_type_response.status_code == 200:
            content_type_data = content_type_response.json()
            if content_type_data["count"] > 0:
                content_type_id = content_type_data["data"][0]["id"]
                
                # 添加测试内容
                test_content = {
                    "type": content_type_id,
                    "question": "测试URL参数删除的问题",
                    "answer": "测试URL参数删除的答案"
                }
                
                save_response = requests.post(f"{BASE_URL}/content/save", json=test_content)
                if save_response.status_code == 201:
                    save_data = save_response.json()
                    content_id = save_data['saved'][0]['id']
                    print(f"   添加的内容ID: {content_id}")
                    
                    # 现在测试通过URL参数删除
                    print("2. 测试通过URL参数删除功能...")
                    delete_response = requests.delete(f"{BASE_URL}/content/delete?id={content_id}")
                    print(f"   删除响应状态码: {delete_response.status_code}")
                    print(f"   删除响应正文: {delete_response.text}")
                    
                    return True
                else:
                    print(f"   添加测试内容失败: {save_response.text}")
                    return False
            else:
                print("   没有找到FAQ类型")
                return False
        else:
            print(f"   获取类型失败: {content_type_response.text}")
            return False
    except Exception as e:
        print(f"   测试通过URL参数删除功能时出错: {e}")
        return False
 
 
def test_delete_nonexistent_content():
    """测试删除不存在的Content"""
    print("\n测试删除不存在的Content...")
    
    try:
        # 尝试删除一个不存在的ID
        delete_response = requests.delete(f"{BASE_URL}/content/delete", json={"id": 99999})
        print(f"   删除不存在内容的响应状态码: {delete_response.status_code}")
        print(f"   删除不存在内容的响应正文: {delete_response.text}")
        
        # 预期应该返回404
        if delete_response.status_code == 404:
            print("   ✓ 正确返回404状态码")
            return True
        else:
            print("   ✗ 未正确返回404状态码")
            return False
    except Exception as e:
        print(f"   测试删除不存在内容时出错: {e}")
        return False
 
 
if __name__ == "__main__":
    print("开始测试删除Content API...\n")
 
    # 等待片刻以便服务器准备就绪(如果正在运行)
    time.sleep(1)
 
    # 运行测试
    test_delete_content()
    test_delete_content_by_url_param()
    test_delete_nonexistent_content()
 
    print("\n删除API测试完成!")