使用python模块requests+ddt+unittest模块 单元测试,写出如下接口的接口自动化测试脚 本。 域名http://8.130.46.86:8081/ 路径:/appapi/luckDraw 方法:post 参数格式:application/json 接口说明:输入手机号和活动id参加抽奖 参数名称mobilePhone,类型INT,必填,说明为手机号;activityGuid,类型INT,必填,说明为活动ID(0-1000) 接口返回输入的手机号和活动ID{“activityGuid”:XXX,“message”:“今日已抽奖”,“mobilePhone”:XXXXXXX}
时间: 2023-06-10 16:06:51 浏览: 47
以下是使用 Python requests, ddt 和 unittest 模块编写的接口自动化测试脚本示例:
```python
import unittest
import requests
import ddt
@ddt.ddt
class TestLuckDrawAPI(unittest.TestCase):
base_url = "http://8.130.46.86:8081/appapi/luckDraw"
@ddt.data(
{"mobilePhone": 1234567890, "activityGuid": 0},
{"mobilePhone": 9876543210, "activityGuid": 1000},
# Add more test data here
)
def test_luck_draw(self, data):
response = requests.post(self.base_url, json=data)
self.assertEqual(response.status_code, 200)
self.assertEqual(response.headers.get("Content-Type"), "application/json")
self.assertIn("mobilePhone", response.json())
self.assertIn("activityGuid", response.json())
self.assertIn("message", response.json())
```
解析:
1. `unittest.TestCase` 是 Python 内置的单元测试框架,可以用来编写测试用例;
2. `requests` 是 Python 的 HTTP 请求库,可以发送 HTTP 请求;
3. `ddt` 是一个 Python 模块,可以让我们方便地使用数据驱动测试(DDT);
4. `@ddt.ddt` 装饰器用于告诉 `unittest` 框架这个测试类使用 DDT;
5. `@ddt.data` 装饰器用于指定测试数据,每一个测试数据是一个字典,包含 `mobilePhone` 和 `activityGuid` 两个键;
6. `self.assertEqual` 用于断言两个值是否相等;
7. `self.assertIn` 用于断言一个值是否在另一个值中;
8. `response.status_code` 表示 HTTP 响应的状态码,应该是 200;
9. `response.headers.get("Content-Type")` 表示 HTTP 响应头中的 Content-Type 字段,应该是 "application/json";
10. `response.json()` 表示 HTTP 响应正文中的 JSON 数据,应该包含 `mobilePhone`、`activityGuid` 和 `message` 三个键。