TA的每日心情 | 无聊 2024-10-29 09:20 |
---|
签到天数: 76 天 连续签到: 1 天 [LV.6]测试旅长
|
2#
楼主 |
发表于 2023-8-18 11:35:33
|
只看该作者
安装教程
依赖库
参考 pipenv --Pipfile 虚拟环境文件,不一一列出
首先,执行本框架之后,需要搭建好 python 环境,python 环境搭建自行百度
安装 pipenv环境: pip install pipenv
创建虚拟环境: pipenv install
如果有个别包无法安装,则:pipenv shell 进入环境后,再pipenv install XX包
使用说明
测试用例只需要在 cases/cases/xxx.xlsx 文件填写测试用例即可,可以参考测试用例模板文件,由于模板文件的用例已经做了敏感信息处理,所以执行执行模板的用例应该会报错
运行用例可以直接进入到 test_script/test_xxx.py 中,执行test_xxx.py文件,也可以直接运训 最外层的 run.py文件,
Personalinformation.py 这个文件是用来生成一些测试数据,方便做功能测试或者其他一般性测试使用
开放测试接口文档
大家可以使用开源接口中的登录、个人信息、收藏(新增、查看、修改、删除)等功能,编写接口自动化案例,然后测试程序脚本
下方是接口文档地址,大家可以自行查看(因为开源的接口,里面有些逻辑性的功能,如修改被删除的网址接口并没有过多的做判断,
因此用例中只写了一些基础的场景,仅供大家参考。)
https://wanandroid.com/blog/show/2
如何创建用例
excel中的测试用例相关字段介绍
下面是一个关于一个用例中的所有字段,字段不是全部必填
字段讲解
下面对每一个字段的作用,做出解释:
Id:测试用例的id,唯一,必填
Name: 测试用例的名称,必填
Description: 测试用例描述,可选,建议填写,生成的报告会用到这个字段
Run: 是否运行这条用例,如果不填或填写的不是YES/yes,则不运行这条用例
Time: 定时器,数字,非必填,填写则会等待多少秒后运行这条用例
Method: 请求方法,支持所有的http请求方法,get/post/put/patch 等等
Url: 接口路径或者整个请求地址,如果不带域名,则会自动去init表中拼接host上去,Url中可以参数化,如:
/test/api/get/{{id}}/{{func(*args,**kwargs)}}
Headers: 请求头,字典填写方式,如:{"Content-Type":"application/json","token":"{{token}}",'time':'{{timestamp()}}'}
Headers Crypto: 请求头是否加密,可以自定义加密方式,然后这里输入你的加密方法名即可,如 MD5\sha1 等
Query Str: 查询字符串参数,也就是URL过长的时候,可以将URL后面的参数拆出来填写在这里,字典的方式填写,支持参数化
Request Data Type: 请求参数类型,有 json,file,params,data 等等这几种
Request Data: 请求参数,字典形式填写,支持参数化,如:{"projectId":"{{projectId}}","tvSequence":"{{random_string()}}"}
Setup Script: 前置脚本,可以直接写 pthon 代码,比如类,函数,等等,如果是函数,类一定要调用才会执行。编写方式示例:
- # 可以写类,可以写函数,可以直接普通python语句,
- def setup(action):
- print("获取action示例的属性", action.get_vars())
- # 更新属性到action实例的属性中
- action.update_vars("999", "99999")
- print("获取所有的临时变量", action.get_variable())
- print("将变量存到临时变量表中以便后续用例{{key}}使用", action.update_variable("key", "value"))
- print("将函数存到临时变量表,以便后面调用{{setup_func()}}也可以", action.update_variable("setup_func", setup))
-
-
- # 调用方法
- setup(action)
复制代码 Request Data Crypto: 请求参数是否加密,可以填写你需要的加密方式,如 MD5\sha1 等
Extract Request Data:提取请求参数的字段或整个请求参数字典,如:{"k": "$.projectId", "x": "$.data[0].age[3].a"}
Jsonpath: 提取响应结果的 jsonpath 表达式,示例:默认情况下若表达式结果只有一个值那么就存为字符串,如果表达式执行结果有多个值,那么就存为列表,表达式填写方式如下:
{"k": "$.data", "x": "$.data[0].age[3].a"}
Regex: 正则表达式,填写正则表达式字符串,示例: r'"id": (\d+), "name": "(\w+)",'
Regex Params List:填写一个列表(list),用来存正则表达式提取值的变量列表,如: ["a", "b"],则表示用a,b 变量接收上面的正则表达式的返回值
Retrieve Value:python字典的取值方式,多条用分号间隔,如:name=data[0].name;ok=data[0].id;an=data[0].age[3].a
SQL:填写增删改查sql语句,字典的key是需要执行的sql方法,值是sql语句,可以填写多条,填写格式示例:
- {
- "insert": {
- "insert_data": "INSERT INTO users (name, age, email) VALUES ('John', 25, 'john@example.com');"
- },
- "select": {
- "select_data": "SELECT name, age, email FROM users WHERE age > 20;"
- },
- "delete": {
- "delete_data": "DELETE FROM users WHERE age > 30;"
- },
- "update": {
- "update_data": "UPDATE users SET age = 26 WHERE name = 'John';"
- }
- }
复制代码 Sql Params Dict:提取sql的结果,同jsonpath,如:{"name": "$.select.select_data.name", "age": "$.select.select_data.age"}
Teardown Script: 后置python脚本代码,任意函数或者类,用例发送请求后会自动执行该代码
Expected:预期结果,写法示例:[{"check":"result.user.name","comparator":"eq","expect":"chenyongzhi"}]
or {"check":"result.user.name","comparator":"eq","expect":"chenyongzhi"},支持的断言比较方式有如下这些:
- {
- "eq": "eq:实际值与期望值相等",
- "lt": "lt:实际值小于期望值",
- "lte": "lte:实际值小于或等于期望值",
- "gt": "gt:实际值大于期望值",
- "gte": "gte:实际值大于或等于期望值",
- "neq": "neq:实际值与期望值不相等",
- "str_eq": "str_eq:字符串实际值与期望值相同",
- "length_eq": "length_eq:实际值的长度等于期望长度",
- "length_gt": "length_gt:实际值的长度大于期望长度",
- "length_gte": "length_gte:实际值的长度大于或等于期望长度",
- "length_lt": "length_lt:实际值的长度小于期望长度",
- "length_lte": "length_lte:实际值的长度小于或等于期望长度",
- "contains": "contains:期望值包含在实际值中",
- "contained_by": "contained_by:实际值被包含在期望值中",
- "type_match": "type_match:实际值的类型与期望值的类型相匹配",
- "regex_match": "type_match:正则匹配(从字符串的起始位置匹配)",
- "regex_search": "regex_search:正则匹配(从字符串的任意位置匹配)",
- "startswith": "startswith:实际值是以期望值开始",
- "endswith": "endswith:实际值是以期望值结束"
- }
复制代码 Response: 响应结果,用例执行后,会自动将结果回写到这个excel中,查看测试结果,一目了然。
创建用例步骤
开始填写测试用例前,先看看这个init表的字段,下面我会统一讲解:
在 cases 文件夹下方创建被测模块或者系统,然后在系统下创建相关的 excel 用例(可以复制模板excel文件来填写测试用例)
将测试用例路径添加到 common 文件夹下的 config.py 文件中
进入 test_script/ 文件夹,在该文件夹下操作 test_api.py 文件将 test_file 变量地址替换为刚刚填写的测试用例地址
excel 中的用例必须填写用例 id,另外 init sheet 表照中的全局初始化数据字段 中的部分字段必须填写如:
- """
- # init 表中的字段
- id: 序号
- environment: 被测环境,建议填写:如测试环境,开发环境,生产环境等等
- host:域名地址,如:https://www.baidu.com,非必填,填写了就会取这部分的地址与测试用例中的Url拼接发送请求
- path:一小部分的请求路径,比如所有的接口可能都存在:/test/api 这种,就可以填写上去,非必填
- databases: 数据库,非必填,{"host": "127.0.0.1","port": 3306,"database": "mysql","user":"root","password":"root@3306"}
- sheets:你想执行的sheet是哪一个,全部执行就填写 'all',部分执行就填写具体的sheet如["第一个sheet的名称","第二个sheet的名称"...]
- initialize_data:初始化的一些固定参数,比如登录账号,密码,等等都是基本不变的数据可以填写这里,属于全局变量,填写方式字典{"{{username}}":"1234","{{pwd}}":"密码"}
- run: 决定使用的环境,值为yes表示用这个环境运行,有多个环境都填写yes,只运行第一个yes
- """
复制代码
|
|