import unittest import requests Host = 'https://testlhy.eparklife.com' class LoginTest(unittest.TestCase): token = '' def setUp(self): login_url = f'{Host}/api/v1/admin/login?name=lsl&pwd=e7KikcBwG0FSVVIyEL%2FZvLzdaRxFiMPESanpeeMe3Llaweg8of9voFK4lt5jw7vwLOCJSn9M7em3PjmoEORPXvC36ftxjB%2BZ2djptRCCtk%2F%2FRGuNdMxgVW%2BhSduvI%2FXuPibMos4ohJnJUVeKc3ToXXAbh%2FDXvXRDKETOGSMlHLo%3D' headers = { 'Content-Type': 'application/json' } payload = { "name": "lsl", "pwd": "e7KikcBwG0FSVVIyEL/ZvLzdaRxFiMPESanpeeMe3Llaweg8of9voFK4lt5jw7vwLOCJSn9M7em3PjmoEORPXvC36ftxjB+Z2djptRCCtk//RGuNdMxgVW+hSduvI/XuPibMos4ohJnJUVeKc3ToXXAbh/DXvXRDKETOGSMlHLo=" } response = requests.post(url=login_url, json=payload, headers=headers) response_text = response.json() print(response_text) LoginTest.token = response_text['result']['token'] print(LoginTest.token) def test_update_success(self): update_url = f'{Host}/api/v1/admin/changePwd' headers = { 'Content-Type': 'application/json', 'token': LoginTest.token } payload = { "oldPwd": 'a123456', "newPwd": "123456" } response = requests.post(url=update_url, json=payload, headers=headers) print(response.json()) if __name__ == '__main__': unittest.main() 修复 def test_update_success(self)执行后,显示token不存在问题
时间: 2024-02-14 12:23:35 浏览: 128
根据你提供的代码,我注意到你在`setUp`方法中获取了`token`并将其存储在`LoginTest`类的静态变量`token`中。然后,在`test_update_success`方法中,你尝试使用这个`token`来发送请求。
根据你的描述,当执行`test_update_success`方法时,出现了一个`token不存在`的问题。这可能是因为`setUp`方法没有正确设置`token`。
我建议你检查一下以下几点:
1. 确保`setUp`方法被正确调用。你可以在`setUp`方法中添加一个`print`语句,确保它被执行。
2. 检查`response_text`中是否包含`result`和`token`字段。你可以在`setUp`方法中添加一些打印语句,以确保这些字段存在并且正确提取出来。
3. 确保`LoginTest.token`在`test_update_success`方法中能够正确访问。你可以在`test_update_success`方法中添加一个`print`语句,打印一下`LoginTest.token`的值,以确认它是否被正确设置。
通过检查这些问题,你应该能够找到导致`token不存在`问题的原因,并进行修复。如果问题仍然存在,请提供更多的错误信息或调试输出,以便我能够更好地帮助你解决问题。
相关问题
编写一个基于unittest的接口测试框架
下面是一个基于unittest的接口测试框架的示例代码:
```python
import unittest
import requests
class TestAPI(unittest.TestCase):
def setUp(self):
self.base_url = 'http://api.example.com/'
def test_api_1(self):
url = self.base_url + 'endpoint1'
data = {'param1': 'value1', 'param2': 'value2'}
response = requests.post(url, data=data)
self.assertEqual(response.status_code, 200)
self.assertEqual(response.json()['result'], 'success')
def test_api_2(self):
url = self.base_url + 'endpoint2'
params = {'param1': 'value1', 'param2': 'value2'}
headers = {'Authorization': 'Bearer token'}
response = requests.get(url, params=params, headers=headers)
self.assertEqual(response.status_code, 200)
self.assertIn('data', response.json())
def tearDown(self):
pass
if __name__ == '__main__':
unittest.main()
```
在这个示例中,我们首先导入了unittest和requests库。然后定义了一个TestAPI类,继承了unittest.TestCase。在setUp方法中,我们定义了接口的基础URL。接下来,我们定义了两个测试用例test_api_1和test_api_2。在每个测试用例中,我们定义了接口的URL、参数、请求头,并使用requests库发送请求,然后使用断言来验证返回结果是否符合预期。最后,在tearDown方法中,我们可以清理测试环境。
运行这个测试框架,可以使用命令行运行:
```
python test_api.py
```
这个测试框架可以自动运行所有的测试用例,并输出结果。如果有测试用例失败,会在控制台输出详细的错误信息。这个测试框架可以很方便地扩展,添加更多的测试用例和断言。
阅读全文