我正在使用Django-TastyPie开发API。
API做什么?
它会检查服务器上是否存在两个或多个请求,如果是,它会交换两个请求的数据,并在7秒延迟后返回一个json响应。
我需要做的是向服务器发送多个异步请求以测试此API。 我正在使用Django-Unit Test和Tasty-Pie来测试这个功能。
问题
Django develpment服务器是单线程的,因此它不支持异步请求
已尝试解决方案:
我试图通过使用多处理来解决这个问题:
class MatchResourceTest(ResourceTestCase):
def setUp(self):
super(MatchResourceTest, self).setUp()
self.user=""
self.user_list = []
self.thread_list = []
# Create and get user
self.assertHttpCreated(self.api_client.post('/api/v2/user/', format='json', data={'username': '123456','device': 'abc'}))
self.user_list.append( User.objects.get(username='123456') )
# Create and get other_user
self.assertHttpCreated(self.api_client.post('/api/v2/user/', format='json', data={'username': '456789','device': 'xyz'}))
self.user_list.append( User.objects.get(username='456789') )
def get_credentials(self):
return self.create_apikey(username=self.user.username, api_key=self.user.api_key.key)
def get_url(self):
resp = urllib2.urlopen(self.list_url).read()
self.assertHttpOK(resp)
def test_get_list_json(self):
for user in self.user_list:
self.user = user
self.list_url = 'http://127.0.0.1:8000/api/v2/match/?name=hello'
t = multiprocessing.Process(target=self.get_url)
t.start()
self.thread_list.append( t )
for t in self.thread_list:
t.join()
print ContactCardShare.objects.all()
请建议我通过发送异步请求来测试此API的任何解决方案
或
允许django开发服务器异步处理多个请求的任何APP,库或任何此类
答案 0 :(得分:0)
据我所知,django's development server is multi-threaded。
我不确定此测试的格式是否正确。测试setUp
不应该包含测试本身,通过创建条目应该是简单的数据插入。 post
应该有自己的测试。
有关示例测试用例,请参阅tastypie docs。