[英]How to execute a python test using httpretty/sure
我是python測試的新手,所以請隨時提供任何明顯的信息。
基本上,我想使用python進行一些RESTful測試,並找到了httpretty和確定的庫,它們看起來非常不錯。
我有一個包含以下內容的python文件:
#!/usr/bin/python
from sure import expect
import requests, httpretty
@httpretty.activate
def RestTest():
httpretty.register_uri(httpretty.GET, "http://localhost:8090/test.json",
body='{"status": "ok"}',
content_type="application/json")
response = requests.get("http://localhost:8090/test.json")
expect(response.json()).to.equal({"status": "ok"}
基本上與https://github.com/gabrielfalcao/HTTPretty提供的示例代碼相同
我的問題是; 我如何簡單地運行此測試以查看它通過還是失敗? 我試過只使用./pythonFile
執行它,但這不起作用。
如果您的測試是通過Python函數實現的,那么當然,僅嘗試執行該文件就不會運行該測試:該文件中的任何內容實際上都不會調用RestTest
。
您需要某種測試框架,該框架將調用您的測試並整理結果。
一種這樣的解決方案是python-nose ,它將查找名為test_*
方法並運行它們。 所以,如果你要重命名RestTest
到test_rest
,你可以運行:
$ nosetests myfile.py
.
----------------------------------------------------------------------
Ran 1 test in 0.012s
OK
nosetests
命令具有各種選項,這些選項可控制運行哪些測試,如何處理和報告錯誤,等等。
Python 3在unittest
模塊中包含類似的功能,也可以作為Python 2的backport稱為unittest2
。 您可以修改代碼以利用unittest
如下所示:
#!/usr/bin/python
from sure import expect
import requests, httpretty
import unittest
class RestTest(unittest.TestCase):
@httpretty.activate
def test_rest(self):
httpretty.register_uri(httpretty.GET, "http://localhost:8090/test.json",
body='{"status": "ok"}',
content_type="application/json")
response = requests.get("http://localhost:8090/test.json")
expect(response.json()).to.equal({"status": "ok"})
if __name__ == '__main__':
unittest.main()
現在,運行文件將提供類似於我們在nosetests
看到的輸出:
$ python myfile.py
.
----------------------------------------------------------------------
Ran 1 test in 0.012s
OK
您是否嘗試過調用您的方法?
還是注解意味着您不必顯式調用方法?
如果我調用您的方法,則似乎可行。 如果我在期望值的一側更改值,則它會正確抱怨值不匹配。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.