0

我是 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但这不起作用。

4

2 回答 2

2

如果您的测试是作为 Python 函数实现的,那么简单地尝试执行该文件当然不会运行测试:该文件中没有任何内容实际调用RestTest.

您需要某种测试框架来调用您的测试并整理结果。

一种这样的解决方案是python-nose,它将查找命名的方法test_*并运行它们。因此,如果要重命名RestTesttest_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
于 2015-03-11T03:12:23.007 回答
-1

您是否尝试过调用您的方法?

或者注释是否意味着您不必显式调用您的方法?

如果我调用你的方法,它似乎有效。如果我更改期望一侧的值,它会正确抱怨值不匹配。

于 2015-03-11T03:10:16.193 回答