我使用Bravado为 petstore 创建 REST API 的 Python 客户端。
我需要执行相同的操作来获取 REST API 的动态 Ruby 客户端。
我在操作系统集成 Swagger 页面中看到了一系列工具,但其中大多数似乎是使用 Swagger 进行自动化测试或创建 Swagger/openapi API,而不是创建使用 Swagger API 的客户端。
Svelte是上面列表中的“来自 Swagger JSON 规范的动态 Ruby API 客户端”。它可能是一个很好的候选者,看起来与我已经使用的Bravado Python 库类似,但是:
下面是 Python …
新的python,并尝试安装模块"apiclient",因为我的ide pycharm无法识别导入:
from apiclient.discovery import build
Run Code Online (Sandbox Code Playgroud)
我试过的:
https://developers.google.com/api-client-library/python/start/installation#system-requirements 然后我将其解压缩到
/Users/nirregev/anaconda/bin/google-api-python-client-1.5.0
Run Code Online (Sandbox Code Playgroud)
并在我的mac终端python setup.py安装上运行它,但仍然pycharm无法识别此模块.根据pycharm我安装了以下解释器:
/Library/Frameworks/Python.framework/Versions/3.5/bin/python3.5
/Users/nirregev/anaconda/bin/python
/System/Library/Frameworks/Python.framework/Versions/2.7/bin/python2.7
Run Code Online (Sandbox Code Playgroud) 我在单元单元测试中使用Django Rest Framework API进行身份验证时遇到问题。通过浏览器访问系统时,系统可以按预期工作。但是,在以下端点向以下类发送放置请求时,我收到401 HTTP状态:
class UserDetail(RetrieveModelMixin, DestroyModelMixin, UpdateModelMixin, GenericViewSet):
authentication_classes = (BasicAuthentication, TokenAuthentication)
permission_classes = IsAuthenticated,
queryset = CustomUser.objects.all()
serializer_class = UserSerializer
Run Code Online (Sandbox Code Playgroud)
下面的测试如下:
class AccountTests(APITestCase):
def setUp(self):
self.user = CustomUser.objects.create_user(email="user1@test.com", password="password1", is_staff=True)
self.user.save()
self.user = CustomUser.objects.get(email="user1@test.com")
self.client = APIClient()
def test_add_name(self):
self.client.login(email="user1@test.com", password='password1')
url = reverse('customuser-detail', args=(self.user.id,))
data = {'first_name': 'test', 'last_name': 'user'}
self.client.login(email="user1@test.com", password='password1')
response = self.client.put(url, data, format='json')
self.assertEqual(response.status_code, status.HTTP_200_OK)
Run Code Online (Sandbox Code Playgroud)
当打印response.data时,我收到:
{u'detail': u'Authentication credentials were not provided.'}
Run Code Online (Sandbox Code Playgroud)
client.login(...)方法返回true,但是凭据似乎未附加到标头。我在IsAuthenticated权限类中的实验有一个request.user = AnonymousUser。在BasicAuthentication类中,auth =无。
我是否缺少在settings.py中使用BasicAuth的东西?甚至在测试本身中?
谢谢。
我有一个 API 端点,我想对其进行 PUT 调用,该调用需要正文和查询参数。我使用 Django 的测试客户端在测试用例(文档)中调用我的端点。
我在文档中读到,对于 GET 调用,查询参数是使用 argument 引入的data。我还读到,对于 PUT 调用,参数data代表主体。我错过了如何在 PUT 调用中添加查询参数的文档。
特别是,这个测试用例失败了:
data = ['image_1', 'image_2']
url = reverse('images')
response = self.client.put(url,
data=data,
content_type='application/json',
params={'width': 100, 'height': 200})
Run Code Online (Sandbox Code Playgroud)
这个测试用例通过了:
data = ['image_1', 'image_2']
url = reverse('images') + '?width=100&height=200'
response = self.client.put(url,
data=data,
content_type='application/json')
Run Code Online (Sandbox Code Playgroud)
换句话说:这种手动 URL 构建真的有必要吗?
我正在为帖子视图编写测试。它确实有效,但是当我尝试使用 APIClient.post 发布到它时,我得到 QueryDict: {}。这是测试:
class SMSCreateData(APITestCase):
...
def test_SMS(self):
...
postData = {'Body': string, 'From': phNum.phone_number}
self.client.post(reverse('SMS-data'), postData)
Run Code Online (Sandbox Code Playgroud)
这是视图:
def SMSSubmitDataPointView(request):
...
try:
print request.POST
...
Run Code Online (Sandbox Code Playgroud)