1

私は非常に混乱する問題があります。Djangoはunittest中にcouchbaseの単一の値をnullにランダムに設定します

私は他の人の間で2つのテストケースが含まれ、私のオブジェクトのいずれかのユニットテスト、書いた:testDtestE間で

# coding=utf-8 
import unittest 

from unittests.helper_functions import * 

fix = {} 

... Test Data is initialized here 

check_if_test_bucket_is_used() 
check_if_cb_credentials_are_set() 

print "Flushing Bucket" 
flush_test_bucket(CB_HOST, CB_USER, CB_PASS) 

print "Starting Tests" 
create_admin_user() 

def testD_post_vehicle_by_driver(self): 

    res_vehicle = post_data('/drivers/vehicles', valid_vehicle_0, auth_obj=None, 
          headers={'Authorization': 'WebAuth %s' % fix['token'], 
             'Content-Type': 'application/json', 
             'Accept': 'application/json'}) 

    driver = cb_find_by_key(valid_driver_0_key) 
    self.assertIn(valid_obj_0_key, driver[MISSING_KEY]) 

    print driver 

def testE_get_vehicle_by_driver(self): 
    res_single_vehicle = get_data('/vehicles/12345', auth_obj=None, 
            headers={'Authorization': 'WebAuth %s' % fix['token'], 
              'Content-Type': 'application/json', 
              'Accept': 'application/json'}) 

を、キーMISSING_KEYは私のデータベース・オブジェクトから消えます。

ドライバオブジェクトをtestDに印刷すると、まだ値があります。そしてtestEでは、前にこの車両を手に入れようとする要求の前に、値はすでにnullのCouchbaseになっています。

Djangoのビューは次のとおりです。

def post(self, request): 
    data = request.data 
    driver = request.user.details 

    vehicle = self.vehicle_bo.create_vehicle_by_driver(data, driver[m.ID]) 

    return content_response(vehicle, VehicleModel, request, status_code=status.HTTP_201_CREATED) 

私はこの時点で、値はデシベルで、まだ正確である、リターンでそこにブレークポイントを設定します。

機能content_response:また

def content_response(response_obj, parser_class, request, status_code=status.HTTP_200_OK, 
       obj_modification_function=None, default='{}'): 

if response_obj is None: 
    return default 

# some json manipulation 

response = Response(prepared_obj, status=status_code, headers=get_headers(request)) 
return response 

ここで、この時の戻り値は同じまま。

この時点から、私が理解する限りrest_frameworkのレスポンスによってすべてが処理されますが、これはDB操作をまったく行うべきではありません。

これはどこから来たのですか?

いくつかの詳細情報:

  • ユニットテストフレームワークなしですべての要求を送信するには、A-Eが実行されているすべてのテストの前にNULL値
  • 私は全体のCouchbaseバケットをフラッシュしていますにはなりません。
  • 私はそれはちょっと不明だが、あなたはバケツにフラッシュ操作を開始し、その後すぐにそれを使用しようとしているように聞こえるPyCharm

答えて

0

でテストを実行しています。

フラッシュ操作で覚えておくべき重要な点は、という非同期のイベントであり、完了するまでに時間がかかることです。特に、ディスク上のデータをクリーンアップするのに時間がかかるため、Couchbase Bucketsを使用しています。 。一般的に言えば、より信頼できる動作がからバケットを削除して再作成する場合があります。これは、Python SDKのadministrative APIを使用して実行できます。

関連する問題