autodoc python实现。
autodoc的Python项目详细描述
从单元测试生成文档。
这个库是autodoc的python实现。
安装
$ virtualenv --distribute autodoc_sample $ source autodoc/bin/activate $ cd autodoc $ pip install autodoc
用法
使用pyautodoc=1运行unittest,为用@autodoc.generate修饰的测试生成文档。
PYAUTODOC=1 python -m unittest examples/test_unittest.py
如果使用py.test作为测试运行程序。
PYAUTODOC=1 py.test tests examples/test_pytest.py
如果你用鼻子做跑步测试。
PYAUTODOC=1 nosetests tests examples/test_unittest.py
unittest的示例
class TestUnittest(TestCase): def setUp(self): app = create_app self.client = TestApp(app) @classmethod @autodoc.generate('var/test_unittest.rst') def tearDownClass(cls): pass @autodoc.describe('GET /') def test_get(self): """ GET / """ res = self.client.get('/') self.assertEqual(res.status_code, 200) return res
@autodoc.describe()描述测试名称。
例如,分配给生成的文档。
@autodoc.generate(路径输出)将生成文档。
py.test的示例
@pytest.fixture def setup(): setup = TestApp(create_app) return setup @autodoc.generate('var/test_pytest.md', template='templates/markdown.md') def teardown_module(module): pass @autodoc.describe('POST /') def test_post(setup): res = setup.post_json('/', params={'id': 1, 'message': 'foo'}) assert res.status_code == 200 return res
请求示例
import requests class TestUnittest(TestCase): def setUp(self): self.client = requests @classmethod @autodoc.generate('var/test_unittest.rst') def tearDownClass(cls): pass @autodoc.describe('POST /') def test_post(self): """ POST / """ params = {'id': 1, 'message': 'foo'} headers = {'content-type': 'application/json'} res = self.client.post('http://example.com/', data=params, headers=headers) self.assertEqual(res.status_code, 200) return res
约定
在测试方法中返回WebTest或请求响应
py autodoc必须返回webtest响应。
@autodoc.describe('POST /') def test_post(setup): res = setup.post_json('/', params={'id': 1, 'message': 'foo'}) assert res.status_code == 200 return res # Must return WebTest or requests response.
生成文档点
@autodoc.generate将创建文档。
如果您将@autodoc.generate设置为每个测试用例,文档将生成每个文件。
class TestUnittest(TestCase): def setUp(self): app = create_app self.client = TestApp(app) @autodoc.generate('var/indext_get.rst') @autodoc.describe('GET /') def test_get(self): """ GET / """ res = self.client.get('/') self.assertEqual(res.status_code, 200) return res @autodoc.generate('var/foo_get.rst') @autodoc.describe('GET /foo') def test_get(self): """ GET / """ res = self.client.get('/foo') self.assertEqual(res.status_code, 200) return res
这将生成var/index\u get.rst和var/foo\u get.rst。
如果要将所有测试生成为单个文件, 装饰autodoc.generate到拆卸类,拆卸模块fixture。
配置
您可以配置@autodoc.generate(output,template=path_to_template)来更改模板文件。