簡體   English   中英

如何使用httpretty / sure執行python測試

[英]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_*方法並運行它們。 所以,如果你要重命名RestTesttest_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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM