に非試験方法を模擬する必要があります。myapp.apps.mytask1.views
で私はちょうど下記のいずれかのようテストクラスを持っているジャンゴ
@mock.patch('myapp.apps.mytask1.views.image_processing.apply_async')
class SortAPITestCase(APITestCase):
def hit_scan("""some args"""):
scan_uri = 'some url'
data = 'some data'
resp = self.client.post(scan_uri, data=data)
id = resp.data['id']
self.assertEqual(resp.status_code, 201)
return data, id
def setUp(self):
super(SortAPITestCase, self).setUp()
self.scan_data, self.id = self.hit_scan()
def test_1(self, mock_obj):
.....
def test_2(self, mock_obj):
.....
、スキャンAPI、セロリタスクなどを呼び出すpost
方法がありあり:
def post("""some args"""):
""" here there is a celery task that gets called"""
image_processing.apply_async(
args=[img_data], queue='image', countdown=10
)
セロリのタスクは、それが多少
@shared_task
def image_processing(img_data):
if os.isfile(img_file):
print "File Not Present"
0123以下のように呼ばれるメッセージを出力
したがって、img_file
が存在しない場合は、File Not Present
が出力されます。テスト機能(模擬あり)がScan APIに送信されると、この印刷メッセージは模擬のためにコンソールに表示されません。しかし、hit_scan()
メソッドは、スキャンAPIに投稿すると、このメッセージはセロリのタスクが嘲笑されていないので印刷されます。セロリの仕事を模擬することはできますhit_scan
??
これで、テストを実行するときにコンソールでprint文が表示されないようにする方法はありますか?
ところで、すべてのテストケースが合格です。その観点からは問題はありません。私はちょうど....
セロリの仕事からの印刷ステートメントの代わりにだけ表示されてコンソールを見栄えたい。
:問題を解決しました。ここに私が行ったことがあります
@mock.patch('myapp.apps.mytask1.views.image_processing.apply_async')
def hit_scan(self, mock_obj, """some args"""):
私は実際の 'mock.patch()'で質問を編集しました。 'hit_scan()'が 'test_'関数で呼び出されるときは、セロリタスクにその文を表示しません。私はそれを確認しました.. –
あなたが言及したことは問題ではありません。あなたは私の編集された質問を見ていたと思います。ありがとう –
ありがとう...私は問題を解決しました。編集をチェック –