我正在编写一些测试来检查与我的 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) 我正在尝试使用一些数据绑定来放置 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<>("").