我是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
执行它,但这不起作用。
答案 0 :(得分:2)
如果您的测试是作为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
答案 1 :(得分:-1)
您是否尝试过调用方法?
或者注释是否意味着您不必明确调用您的方法?
如果我打电话给你的方法,它似乎有效。如果我更改期望值的一侧的值,则会正确地抱怨不匹配的值。