2017-12-18 69 views
0

我與蝗蟲工作負載測試了幾個API的,下面就是蝗蟲文件(locustfile.py)看起來像:response.status_code是200,但response.content是空

class MyTests(TaskSet): 

def on_start(self): 
    print("Starting tests") 

def get_something(self): 
    with self.client.get("some_baseuri" + "some_basepath", catch_response=True) as response: 
     print("Response code: {}".format(response.status_code)) 
     print("Response body: {}".format(response.content)) 

@task(1) 
def my_task(self): 
    self.get_something() 


class WebsiteUser(HttpLocust): 
    task_set = MyTests 

這裏的我怎麼觸發我的測試:

locust -f locustfile.py --no-web --clients=1 --hatch-rate=10 --host=http://127.0.0.1 --num-request=2 --print-stats --only-summary 

的問題是,在日誌中,response.status_code打印爲200,但response.content恰好是空的。當我使用Postman命中相同的API時,我會在預期的響應中看到正確的響應主體。這看起來像一個奇怪的問題,阻止我調用另一個依賴於get_something()方法的API,因爲其他API將get_something()方法中的某些數據用作輸入。

+0

您是否使用不同的工具測試了網址?也許它總是返回空的內容。 – furas

+0

@furas是的,我用郵差測試了相同的URL,它在響應正文中給出了正確的響應內容。 –

+1

我認爲應該有'''response._content'''。你能檢查你得到了什麼迴應嗎? –

回答

0

response.textresponse._content而不是response.content工作。

2

Locust的默認HTTP客戶端是請求。

的要求爲您提供了多種方法訪問響應內容:

  • 的內容以純文本格式的解碼,使用response.text
  • 的內容爲JSON解碼,使用response.json()
  • 用於訪問內容二進制數據,使用response.content
  • 爲原始插座響應,請使用response.raw

這在「請求」文檔的「響應內容」部分詳細解釋:http://docs.python-requests.org/en/master/user/quickstart/#response-content

相關問題