测试实例删除时如何传递上下文?

时间:2019-04-22 23:55:33

标签: django django-rest-framework

我有几个模型,CarCertifyRequest。创建Car实例后,修改后或删除我需要创建一个CertifyRequest,而这又需要手动批准。 CertifyRequest实例包含其创建时间。

我已经通过将context={"now": …}注入到CarSerializer实例中来测试创建和修改,但是我不知道删除时该如何做:

  1. 删除请求永远不会传递给序列化程序,因此我无法以相同的方式访问上下文。
  2. 我可以覆盖destroy中的ModelViewSet并在其中使用get_serializer_context,但是
    1. 我似乎无法将序列化器传递给ModelViewSet实例,并且
    2. the implementation返回一个完全不同的上下文。
  3. 我不想使用可怕的技巧,例如可选的查询参数或测试时间是否“接近”当前测试客户端时间。

我目前正在使用的黑客方法是在传递给视图的now上设置一个额外的Request属性,并在destroy内查找该属性。

1 个答案:

答案 0 :(得分:1)

如果您在视图中使用Django的 int randomNUM() { srand(time(NULL)); int RL = rand() % 100; return RL; RL = 0; } int main() { int RL = randomNUM(); int RL2 = randomNUM(); cout << "RL: " << RL << endl; cout << "RL2: " <<RL2 << endl; } 来获取当前时间,则可以模拟该方法以在测试中返回特定时间并对此进行断言。

timezone.now()