将请求模块与 Django APITestCase 和 APIClient 一起使用?

Using requests module with Django APITestCase and APIClient?

我正在尝试使用 Django 测试我的命令行客户端。我想在我的客户端中使用请求模块从 Django 获取数据,但我正在 APITestCase class 中测试它,因此我可以使用 Factory_Boy.

创建工厂

我收到连接被拒绝错误。

我前端调用视图的文件:

from . import urls
import requests, json
HEADERS = {'content-type':'application/json'}
BASE_URL = 'http://127.0.0.1:80/'

def post(url, **data):
    query = json.dumps(data)
    r = requests.post(BASE_URL+url, data=query, headers=HEADERS)
    return r.json()


def get(url, **data):
    query = json.dumps(data)
    r = requests.get(BASE_URL+url, data=query, headers=HEADERS)
    return r.json()

Django 应用程序的测试文件,位于 APITestCase class:

def setUp(self):
    self.client = APIClient()
    self.populate_addresses()
    self.populate_carriers()
    self.populate_drivers()



def test_requests(self):
    a = query.query_address(err_msg='Stop not found.',
                            conf_msg='Create new stop.')






def populate_addresses(self):
    self.Address__A1 = factories.AddressFactory(
                    name='BANDINI', 
                    city='CHATSWORTH',
                    zip_code='92392', 
                    state='CA',
                    street='12345 BANDINI BLVD')
    self.Address__A2 = factories.AddressFactory(
                    name='BALL METAL', 
                    city='FAIRFIELD',
                    zip_code='92392', 
                    state='CA',
                    street='2400 HUNTINGTON BLVD')

APITestCase 已经有 APIClient 模块。 您可以使用 self.client 访问它,并且可以在测试方法中发送类似 self.client.post(#url,#data) 的请求。您可以获得有关 APIClient here

的更多详细信息