Django 测试
参考文档
编写测试
以测试接口为例,向一个接口发送请求,并获取请求返回的数据(一般为json格式的数据),验证携带不同的参数发送请求的响应状态是否与预期一致。
默认在 tests.py 文件内编写测试代码。 为每个api编写测试自定义测试类,该类继承 unittest.TestCase ,类名为 ***Test 形式。每个类都实现 setUp 方法,用于创建一个 client,模拟发送请求。
import unittest
from django.test import Client
class UserLoginTest(unittest.TestCase):
""" 测试用户登录api """
def setUp(self):
self.client = Client()
以测试用户登录api为例
测试用户名错误
每个测试类中的方法名以 test_ 开头,根据api文档中的请求参数的描述和示例值设置请求参数,携带设置的参数发送请求,然后验证响应是否与预期一致。
def test_login_success(self):
""" 测试登录成功 """
params = {
"account": "18379559476",
"password": "123456"
}
response = self.client.post('http://211.82.97.230:4088/patentApp/v1/user/login/', params)
self.assertEqual(response.status_code, 200)
self.assertEqual(response.json()['code'], 10000)
self.assertEqual(response.json()['role'], 2)
完整测试案例代码
import unittest
from django.test import Client
class UserLoginTest(unittest.TestCase):
""" 测试用户登录api """
def setUp(self):
self.client = Client()
def test_login_success(self):
""" 测试登录成功 """
params = {
"account": "18379559476",
"password": "123456"
}
response = self.client.post('http://211.82.97.230:4088/patentApp/v1/user/login/', params)
self.assertEqual(response.status_code, 200)
self.assertEqual(response.json()['code'], 10000)
self.assertEqual(response.json()['role'], 2)
def test_account_error(self):
""" 测试账号错误 """
params = {
"account": "18379559987",
"password": "123456"
}
response = self.client.post('http://211.82.97.230:4088/patentApp/v1/user/login/', params)
self.assertEqual(response.status_code, 200)
self.assertEqual(response.json()['code'], 10001)
self.assertEqual(response.json()['role'], 2)
def test_password_error(self):
""" 测试密码错误 """
params = {
"account": "18379559476",
"password": "123"
}
response = self.client.post('http://211.82.97.230:4088/patentApp/v1/user/login/', params)
self.assertEqual(response.status_code, 200)
self.assertEqual(response.json()['code'], 10001)
self.assertEqual(response.json()['role'], 2)
运行测试
python manage.py test
可以通过向 **python manage.py test 提供任意数量的 “测试标签” 来指定要运行的特定测试。每个测试标签可以是指向包、模块、TestCase **子类或测试方法的点分隔 Python 路径。例如:
python manage.py test patentApp.tests
python manage.py test patentApp.tests.UserLoginTest
python manage.py test patentApp.tests.UserLoginTest.test_login_success
测试全通过
有测试用例未通过
|