如何使用 httpretty/sure 执行 python 测试

How to execute a python test using httpretty/sure

我是 python 测试的新手,所以请不要犹豫,提供任何明显的信息。

基本上我想用 python 做一些 RESTful 测试,发现 httpretty 和 sure 库看起来非常好。

我有一个 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 的反向端口 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