autodoc python实现。

autodoc的Python项目详细描述


从单元测试生成文档。

https://travis-ci.org/heavenshell/py-autodoc.png?branch=master

这个库是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.rstvar/foo\u get.rst

如果要将所有测试生成为单个文件, 装饰autodoc.generate到拆卸类拆卸模块fixture。

配置

您可以配置@autodoc.generate(output,template=path_to_template)来更改模板文件。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java Clojure关键字在内存中的大小是多少?   Java中有固定长度的通用数组对象吗?   PostgreSQL:通过Java更新我的用户表   错误:使用java解析xml   java Json显示列表中对象的名称   java比较JodaTime时区   与JAVA中的API和包的区别?   java的int值在for循环中不改变   谷歌应用引擎中的java RSA   迁移到spring 5后出现java非法字符错误   java Websphere管理控制台不工作   JavaGSON如何始终在json中包含毫秒?   带有空格和双引号的windows Java ProcessBuilder命令参数失败   java错误:重复的zip条目[43.jar:org/apache/http/annotation/NotThreadSafe.class]