小编fir*_*ost的帖子

如何在django Rest框架中传递用户令牌进行API测试?

我正在编写一些测试来检查与我的 API 的连接。

我已经通过令牌进行了身份识别,并且成功地通过以下方式检索了特定测试用户的令牌:

token = Token.objects.get(user__username='testuser')
Run Code Online (Sandbox Code Playgroud)

我正在努力解决的是使用该令牌创建一个成功的 API 请求,如下所示:

client = APIClient(HTTP_AUTHORIZATION='Token ' + token.key)
response = client.get('/patientFull/1/',headers={'Authorization': 'Token ' + token.key})
Run Code Online (Sandbox Code Playgroud)

我一直在寻找多种方法来实现这项工作,以下是我尝试过的一些方法:

response = requests.get('http://127.0.0.1:8000/patientFull/1/',headers={'Authorization': 'Token ' + token.key} )


client = APIClient()
client.credentials(HTTP_AUTHORIZATION='Token ' + token.key)
response = client.get('/patientFull/1/')
Run Code Online (Sandbox Code Playgroud)

该测试是一个简单的断言,用于检查响应是否有来自服务器的 200 OK HTTP 应答。

上述所有方式都会返回 403 HTTP 响应。

这是我的测试的完整代码(我使用固定装置用测试数据填充我的测试数据库):

import json
import requests
from rest_framework.authtoken.models import Token
from rest_framework.test import APIRequestFactory, APITestCase, APIClient


class CustomerAPITestBack(APITestCase):
    fixtures = ['new-fixtures.json']

    def testDE(self):
        token = Token.objects.get(user__username='jpmichel')
        client = APIClient(HTTP_AUTHORIZATION='Token ' …
Run Code Online (Sandbox Code Playgroud)

django django-testing django-rest-framework

6
推荐指数
1
解决办法
4953
查看次数

使用数据绑定从编辑文本中获取字符串值

我正在尝试使用一些数据绑定来放置 MVVM 结构。

我为视图创建了以下 xml 文件(示例):

<data>
    <variable
        name="LoginVM"
        type="org.ledeme.animekeeper.LogginMV"/>
Run Code Online (Sandbox Code Playgroud)

<EditText
        android:id = "@+id/input_loggin"
        android:text="@{LoginVM.username}"
        android:layout_width = "wrap_content"
        android:layout_height = "wrap_content"
        android:layout_marginTop="200sp"
        android:layout_centerHorizontal="true"
        android:hint="@string/login"
        android:width="200sp"
        android:inputType="text"
        android:textAlignment="center"
        android:singleLine="true"
        android:lines="1"
        android:maxLines="1"
        />
Run Code Online (Sandbox Code Playgroud)

在视图模型(我的称为 LogginMV)中,我定义了一个

private ObservableField<String> username = new ObservableField<>("");
Run Code Online (Sandbox Code Playgroud)

将用户输入的文本绑定到 username

我曾经username.get()尝试获取用户名,但我只得到""(我知道这是由于括号之间的值造成的new ObservableField<>(""),如果它是“test”,我会得到“test”)

我确实创建了一个 getter 和 setter,如下所示:

public String getUsername(){
    return username.get();
}
public void setUsername(ObservableField<String> username) {
    this.username = username;
    this.username.notifyChange();
}
Run Code Online (Sandbox Code Playgroud)

我的问题是我无法弄清楚如何正确进行绑定,所以我得到的是用户输入的内容而不是我在new ObservableField<>("").

java data-binding android

2
推荐指数
2
解决办法
5642
查看次数