Go to file
Albert 444d1b9cb4 更新 2024-10-18 10:38:04 +08:00
.idea
commons
config
data/mockdata
docs 更新 2024-10-09 15:41:50 +08:00
hotloads
logs
reports
server
testcases
README.md
categories.json
conftest.py
environment.xml 更新 2024-10-18 10:38:04 +08:00
logo.png
pytest.ini
requirements.txt
run.py

README.md

首先安装本项目所需的依赖库cmd命令为pip install -i https://pypi.tuna.tsinghua.edu.cn/simple -r E:\api_test_frame\requirements.txt 其中E:\api_test_frame路径替换自己项目的磁盘路径。

接口自动化测试框架规则说明

1、测试用例yaml文件检查必要的四个一级关键字namebase_urlrequestvalidate。

2、测试用例yaml文件在request关键字下包含二个二级关键字methodurl。

3、传参方式在request一级关键字下通过二级关键字参数。

如果是get请求通过params传参。

如果是post请求:

传json格式通过json关键字传参。
传表单格式通过data关键字传参。
传文件格式通过files关键字传参
files
    media./logo.png

4、如果需要做接口关联的话那么必须使用一级关键字: extract。

提取:

如:jsonpath提取方式
extract:
    expires_in: $.expires_in

如:正则表达式提取方式:
extract:
    access_token: '"access_token":"(.*?)"'

取值:

如测试用例yaml文件中使用get_extract_data函数获取access_token值
${get_extract_data(access_token)}

5、热加载当测试用例文件yaml中需要使用动态参数时那么可以在debug_talk.py文件中写方法来调用。

注意传参时需要什么类型的数据需要先做强制转换。int(mix),int(max),如:

创建获取随机数函数:
def get_random_number(self,mix,max):
    return random.randint(int(mix),int(max))
测试用例yaml文件中使用热加载方式调取函数取值
${get_random_number(100000,999999)}

6、目前框架暂时只支持两种断言方式分别是equals(相等)和contains(包含)断言方式。

如:

validate:
   - equals: {status_code: 200}
   - contains: access_token

7、数据驱动使用一级关键字parameterize实现。

yaml中写法

parameterize:

- ['name','appid','secret','grant_type','assert_str']
- ['获取access_token统一鉴权码','wx8cbefbfc3b8c2f3b','4fa4582bf6b362742f079a3b7709ccad','client_credential','access_token']
- ['appid必填项检查',"",'4fa4582bf6b362742f079a3b7709ccad','client_credential','errcode']
- ['secret必填项检查','wx8cbefbfc3b8c2f3b',"",'client_credential','errcode']

ddt写法

$ddt{name}:引用parameterize中的参数name。

8、日志监控异常处理以及基础路径的设置。

9、框架使用说明。

各目录含义:

commons工具类。
config配置文件config.yaml配置基础url和log日志extract.yaml接口提取字段存放文件。
docs接口文档说明、笔记。
datamock接口数据。
logs日志文件。
reportsallure报告、html报告。
server一个电商mock服务接口启动后可运行shop下的测试用例。
testcases测试用例。php论坛的网站takeaway外卖项目接口user码尚商城登录加密的案例weixin微信公众号平台shop电商项目。
conftestpytest配置全局文件。
environment.xmlallure报告环境设置。
categories.jsonallure报告categories设置。
pytest.inipytest运行集。
requiremens.txt:框架所需的第三方库。
run.py框架运行入口。

testcases中写了几个案例

php论坛的网站论坛首页、sign签名。
takeaway外卖项目接口注册、登录、增删改查。
码尚商城用户登录base64、md5、rsa加密。
微信公众号登录、标签的增删改查和文件上传。其中登录做了3个参数化获取access_token统一鉴权码、appid必填项检查、secret必填项检查。
shop电商项目需要启动服务。

10、数据库、jenkins、接口地址、钉钉和QQ邮箱的个人数据设置请使用自己的账号都在config/config.yaml中配置。

dingding_robot.py文件中钉钉密钥secret、钉钉机器人的Webhook地址。

send_mail.py文件中QQ邮箱邮箱账号、授权码。

11、Mock模拟接口场景如果没有实际项目则可以直接运行server/flask_service.py文件然后再去运行run.py。

12、测试报告。

allure报告和html报告二种可在config/config.yaml中选择报告类型pytest.ini中修改运行。

allure报告Categories分类测试用例结果的分类默认情况下有两类缺陷

Product defects产品缺陷测试结果failed。
Test defects测试缺陷测试结果error/broken

categories.json的参数解释

name分类名称。

matchedStatuses测试用例的运行状态默认[“failed”, “broken”, “passed”, “skipped”, “unknown”]。

messageRegex测试用例运行的错误信息默认是 .* ,是通过正则去匹配的。

traceRegex测试用例运行的错误堆栈信息默认是 .* ,是通过正则去匹配的。