swagger文档生成

swagger文档生成

首先要先配好swagger依赖。

使用swagger2markup生成adoc文档

<dependency>
    <groupId>io.github.swagger2markup</groupId>
    <artifactId>swagger2markup</artifactId>
    <version>1.3.1</version>
</dependency>

有两种生成文档的方式

方式一:使用代码形式

    /**
     * 生成AsciiDocs格式文档
     * @throws Exception
     */
    @Test
    public void generateAsciiDocs() throws Exception {
        //    输出Ascii格式
        Swagger2MarkupConfig config = new Swagger2MarkupConfigBuilder()
                .withMarkupLanguage(MarkupLanguage.ASCIIDOC)
                .withOutputLanguage(Language.ZH)
                .withPathsGroupedBy(GroupBy.TAGS)
                .withGeneratedExamples()
                .withoutInlineSchema()
                .build();

        Swagger2MarkupConverter.from(new URL("http://localhost:8081/test/v2/api-docs"))
                .withConfig(config)
                .build()
                .toFolder(Paths.get("./docs/asciidoc/generated"));
    }

    /**
     * 生成Markdown格式文档
     * @throws Exception
     */
    @Test
    public void generateMarkdownDocs() throws Exception {
        //    输出Markdown格式
        Swagger2MarkupConfig config = new Swagger2MarkupConfigBuilder()
                .withMarkupLanguage(MarkupLanguage.MARKDOWN)
                .withOutputLanguage(Language.ZH)
                .withPathsGroupedBy(GroupBy.TAGS)
                .withGeneratedExamples()
                .withoutInlineSchema()
                .build();

        Swagger2MarkupConverter.from(new URL("http://localhost:8081/test/v2/api-docs"))
                .withConfig(config)
                .build()
                .toFolder(Paths.get("./docs/markdown/generated"));
    }
    /**
     * 生成Confluence格式文档
     * @throws Exception
     */
    @Test
    public void generateConfluenceDocs() throws Exception {
        //    输出Confluence使用的格式
        Swagger2MarkupConfig config = new Swagger2MarkupConfigBuilder()
                .withMarkupLanguage(MarkupLanguage.CONFLUENCE_MARKUP)
                .withOutputLanguage(Language.ZH)
                .withPathsGroupedBy(GroupBy.TAGS)
                .withGeneratedExamples()
                .withoutInlineSchema()
                .build();

        Swagger2MarkupConverter.from(new URL("http://localhost:8081/test/v2/api-docs"))
                .withConfig(config)
                .build()
                .toFolder(Paths.get("./docs/confluence/generated"));
    }

    /**
     * 生成AsciiDocs格式文档,并汇总成一个文件
     * @throws Exception
     * toFolder(Paths.get("src/docs/asciidoc/generated"):指定最终生成文件的具体目录位置
     * 如果不想分割结果文件,也可以通过替换toFolder(Paths.get("src/docs/asciidoc/generated")为
     * toFile(Paths.get("src/docs/asciidoc/generated/all")),将转换结果输出到一个单一的文件中,
     * 这样可以最终生成html的也是单一的。
     */
    @Test
    public void generateAsciiDocsToFile() throws Exception {
        //    输出Ascii到单文件
        Swagger2MarkupConfig config = new Swagger2MarkupConfigBuilder()
                .withMarkupLanguage(MarkupLanguage.ASCIIDOC)
                .withOutputLanguage(Language.ZH)
                .withPathsGroupedBy(GroupBy.TAGS)
                .withGeneratedExamples()
                .withoutInlineSchema()
                .build();

        Swagger2MarkupConverter.from(new URL("http://localhost:8081/test/v2/api-docs"))
                .withConfig(config)
                .build()
                .toFile(Paths.get("./docs/asciidoc/generated/all"));
    }

    /**
     * 生成Markdown格式文档,并汇总成一个文件
     * @throws Exception
     * toFolder(Paths.get("src/docs/asciidoc/generated"):指定最终生成文件的具体目录位置
     * 如果不想分割结果文件,也可以通过替换toFolder(Paths.get("src/docs/asciidoc/generated")为
     * toFile(Paths.get("src/docs/asciidoc/generated/all")),将转换结果输出到一个单一的文件中,
     * 这样可以最终生成html的也是单一的。
     */
    @Test
    public void generateMarkdownDocsToFile() throws Exception {
        //    输出Markdown到单文件
        Swagger2MarkupConfig config = new Swagger2MarkupConfigBuilder()
                .withMarkupLanguage(MarkupLanguage.MARKDOWN)
                .withOutputLanguage(Language.ZH)
                .withPathsGroupedBy(GroupBy.TAGS)
                .withGeneratedExamples()
                .withoutInlineSchema()
                .build();

        Swagger2MarkupConverter.from(new URL("http://localhost:8081/test/v2/api-docs"))
                .withConfig(config)
                .build()
                .toFile(Paths.get("./docs/markdown/generated/all"));
    }

执行其中的测试方法生成接口文档

在这里插入图片描述

方式二:使用Maven插件的形式

通过插件不通过代码形式生成文档,注意:使用该插件的话必须保证系统在运行中并且swagger网页能够正常访问
<plugin>
    <groupId>io.github.swagger2markup</groupId>
    <artifactId>swagger2markup-maven-plugin</artifactId>
    <version>1.3.1</version>
    <configuration>
        <!---swagger-api-json路径-->
        <swaggerInput>http://localhost:8081/test/v2/api-docs</swaggerInput>
        <!---生成路径-->
        <outputDir>src/main/resources/docs/asciidoc</outputDir>
        <config>
        	<!--生成格式-->
        	<swagger2markup.markupLanguage>ASCIIDOC</swagger2markup.markupLanguage>
        </config>
    </configuration>
</plugin>

此时右侧Maven会出现该插件

在这里插入图片描述

点击执行命令便能生成文档

在这里插入图片描述

同时Maven还有把adoc格式转成其他文档格式的插件asciidoctor-maven-plugin

它的官网:https://asciidoctor.org/docs/asciidoctor-maven-plugin/

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
可以使用Python中的requests和openpyxl库来实现根据Swagger文档生成自动化测试用例并写入Excel的功能。具体步骤如下: 1. 使用requests库发送GET请求,获取Swagger文档的JSON数据。 2. 解析JSON数据,获取接口名称、请求方法、请求URL、请求参数、请求体、响应结果等信息。 3. 使用openpyxl库创建Excel文件,并在第一行写入表头。 4. 遍历每个接口,将接口信息写入Excel文件的每一行。 5. 在每个接口的行下方,写入该接口的测试用例,包括请求参数、请求体、预期响应结果等信息。 下面是一个简单的示例代码,供参考: ```python import requests from openpyxl import Workbook # 获取Swagger文档的JSON数据 response = requests.get('https://petstore.swagger.io/v2/swagger.json') swagger_data = response.json() # 解析JSON数据,获取接口信息 paths = swagger_data['paths'] sheet_data = [['接口名称', '请求方法', '请求URL', '请求参数', '请求体', '预期响应结果']] for url, methods in paths.items(): for method, info in methods.items(): name = info['summary'] parameters = info.get('parameters', []) request_body = info.get('requestBody', {}).get('content', {}).get('application/json', {}).get('example', {}) responses = info.get('responses', {}) status_code = list(responses.keys())[0] response_body = responses[status_code].get('schema', {}).get('example', {}) # 将接口信息添加到Excel数据中 sheet_data.append([name, method, url, parameters, request_body, response_body]) # 创建Excel文件并写入数据 wb = Workbook() ws = wb.active for row in sheet_data: ws.append(row) wb.save('test_cases.xlsx') ``` 需要注意的是,以上代码是一个简单的示例,实际应用中可能需要对请求参数、请求体、响应结果等进行处理和解析,以生成更完整的测试用例。同时也需要根据实际情况对Excel文件的表头和数据进行调整。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值