繁体   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