如何使用 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
我是 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