[英]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_*
方法并运行它们。 所以,如果你要重命名RestTest
到test_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.