webapi测试工具

webapitest的Python项目详细描述


Web Api Test

python开发的web api测试框架,可使用json与csv编写用例,与post_man无缝衔接。

安装

    pip install webapitest
    注:如果直接用源码执行webapitest,将以下所有命令中的webapitest替换为python -m webapitest.main即可

运行

1、配置你的网站地址、数据库连接等基本参数。

2、部署并启动你的网站

3、执行如下命令,获得测试报告

webapitest run

4、或执行如下命令,分步执行测试

a、webapitest cleandb
b、webapitest initdb
c、webapitest startwebserver
d、webapitest runcase xxx

基本概念

  • 用例

    测试行为的基本概念。一个用例用于测试基本的某个特性,其中有若干参数。同用户同url的用例,会集成为一个场景。

  • 场景

    模拟某个用户使用某个接口的情景。一个场景下会有多个用例。每个场景都用一份json文件来描述。用例数据是一个文件夹,里面包含了多个场景文件。

部署 & 准备

webapitest可以帮助你完成自动化接口测试。执行run命令即可完成完整测试流程。但在执行它之前,您必须思考解答以下问题:

  • 测试的接口是否需要登录?

    测试是模拟真实用户场景,与正常用户的操作仅是缺少网站界面而已。未登录进行接口测试会得到网站对未登录状态的响应。

    想要进行登录再测试,需要在conf中配置登录场景。并可一次性配置多个用户登录,在执行各测试场景时自由切换用户。

  • 如何切换模拟测试用户?

    方法一、在测试用例场景文件中指定user属性

    方法二、执行webapitest runcase 命令时加参数 --user=xxx

  • 测试接口是否进行了持久化动作?

    注意你的测试数据会被保存到数据库中。这可能导致糟糕的结果:同样的测试不断执行,接口可能响应不同结果。例如,测试新增用户,第一次新增用户"张三"成功,第二次执行测试新增"张三"失败。因为发生了同名。 直接在测试环境和线上环境测试GET(只读)接口,一般不会构成不良影响。但很多接口,可能无法这样执行。

  • 是否需要准备测试数据库?

    当必须测试持久化接口时,webapitest提供的标准解决方案是:每次测试使用全新数据库。 测试总是会生产测试数据,在下一次执行测试前清理掉数据库。命令:webapitest cleandb。 网站需要提供数据库初始化命令,保证网站的正常运作。命令:webapitest initdb。 cleandb和initdb命令需要用户在conf中做好配置。

  • 预订的测试目标网站已稳定部署,准备好迎接测试了吗?

    做好配置,确保执行如下命令时:webapitest startwebserver,网站可正常启动。人为在浏览器中输入url模拟测试,应能获得预期结果。 执行命令webapitest execute,开始运行测试,结果会存储到一份json文件中。 分布完成测试命令后,可以执行webapitest run一次完成流程。

配置

  • 测试网站配置

  • 测试用例配置

  • 测试数据库清理配置

  • 测试网站初始化配置

与Postman

  • Postman是接口测试最常见的工具之一,具有用例执行、导出等功能。webapitest完美支持Postman的使用。

  • 在Postman中选择文件夹,右键导出,可得一份xxx.collection.json用例文件。

  • 执行如下命令,可以获得标准用例并执行。

  • 分步执行:

    a、webapitest parse xxx.collection.json --casedir cases
    b、webapitest execute cases
    
  • 一步执行:

    webapitest run_postman_collection xxx.collection.json

其它常见命令

  • 执行webapitest --help查看所有命令;执行webapitest xx --help查看该命令参数和说明

  • 将用例文件转化为Postman的json文件

    webapitest parse2postmanfile <casedir> --postmanfile xxx.json
    
  • 用用例文件中的json文件生产csv文件,如已经存在csv,直接覆盖。(注:使用git管理用例,每个版本文件都在,不担心丢~)

    webapitest createcsv <casedir>
    
  • 用用例文件中的csv文件生产json文件,如已经存在json,直接覆盖。

    webapitest resetjsonbycsv <casedir>
    

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

推荐PyPI第三方库


热门话题
具有泛型的对象的oop Java数组   爪哇丑陋的数字找到第1500名UVA在线评委   SpringJava。lang.IllegalStateException:自动连线批注至少需要一个参数   java为什么我的系统找不到我的属性文件?   java有没有办法让Maven同时构建1.5和1.6字节码JAR?   java通过Sailfin中的header进行操作   使用向量、距离和图形   如果提供的登录信息是错误的,为什么java控件不进入else部分和Toast?   java如何为电子商务安卓应用程序存储产品列表   java保存声音首选项Libgdx Android   java无法在测试单元中调用JpaRepository   java使用批处理更新Cassandra表中的选定列,而不将其他列值设为null   java如何在log4j2中的手动代码配置中向appender添加级别?   从ImageIO返回的java Null。读取(新的ByteArrayInputStream(bs));   java不确定如何防止此Arraylist处于可编辑状态   netbeans中的java更改清单(TrustedLibrary=true属性)   java无法使用RestTemplate和Spring数据REST发布具有关系的新实体