1
嘲笑非測試方法我有一個測試類,就像下面這樣:需要在Django
@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):
.....
在myapp.apps.mytask1.views
,有掃描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"
因此,只要img_file
不存在,它將打印出File Not Present
。當測試結果(使用模擬)發佈到Scan API時,由於模擬,此打印消息不會在控制檯上打印。但是當發佈到Scan API時,這個消息會被打印出來,因爲芹菜任務不會被嘲弄。我可以嘲笑hit_scan
中的芹菜任務嗎?
所以,當我運行測試時,是否有辦法防止打印語句在控制檯中出現?
順便說一句,所有的測試案例通過。從這個角度來看沒有問題。我只想讓控制檯看起來更好,只有....
而不是芹菜任務的打印語句也顯示出來。
編輯:解決了這個問題。這是我做的
@mock.patch('myapp.apps.mytask1.views.image_processing.apply_async')
def hit_scan(self, mock_obj, """some args"""):
我已經用實際的'mock.patch()'編輯了這個問題。當'hit_scan()'在'test_'函數中被調用時,它不會在芹菜任務中打印語句。我檢查過.. –
你提到的事情不是問題。希望你已經看到我編輯的問題..謝謝 –
謝謝...我解決了這個問題。檢查了它 –