utils
AssertUtil.py
-
AssertUtil类(断言封装)
- assert_code方法
验证返回状态码
assert int(code) == int(expected_code)
- assert_body方法
验证返回结果内容相等
assert body == expected_body
- assert_in_body方法
验证返回结果是否包含期望的结果
assert expected_body in body
EmailUtil.py
-
SendEmail类
- __init__方法:初始化,当类被实例化之后,会获得smtp地址,用户名,密码,接收邮件者,邮件标题,邮件内容,邮件附件等信息
-
send_mail方法
- 初始化邮件信息
- 判断是否有附件
- MIMEText读取文件、设置内容类型、设置附件头
- 将内容附加到邮件主体中
- 登录邮件服务器
- 发送邮件
ExcelUtil.py
-
ExcelReader类
- data方法:读取sheet方式,名称,索引
LogUtil.py
-
Logger类
- 输出控制台
- 输出文件
-
my_log:对外方法,初始log工具类,提供其它类使用
MysqlUtil.py
大多数情况下,我们接口自动化测试需要对数据库进行验证,比如说,我们在注册接口中,需要验证数据库中是否有新增的数据,这时候我们就需要对数据库进行查询,然后对查询结果进行断言。比如说,我们需要对订单接口进行测试,需要验证数据库中的订单数据是否正确,这时候我们就需要对数据库进行查询,然后对查询结果进行断言。
-
Mysql封装类
- __init__方法:链接数据库,光标对象
- fetchone方法:单个查询
- fetchall方法:多个查询
- exec方法:执行数据库,比如说增删查改
RequestsUtil.py
-
Request类
- get方法
- post方法
YamlUtil.py
-
YamlReader类
- data方法:单个文件读取
- data_all方法:多个文档读取
config
Conf.py
-
获取文件/目录路径方法
- report路径
- 测试数据data路径
- db_conf.yml路径
-
config目录的路径
- conf.yml文件的路径
- Log文件路径
-
ConfigYaml类
- get_excel_file:获取测试用例excel名称方法
- get_excel_sheet:获取测试用例sheet名称方法
- get_conf_url:获取接口地址方法
- get_conf_log:获取日志级别方法
- get_conf_log_extension:获取文件扩展名方法
- get_db_conf_info:根据db_alias获取该名称下的数据库信息方法
- get_email_info:获取邮件配置相关信息
conf.yml
-
BASE
-
log_level
- debug:默认
- info
- warning
- error
- log_extension
-
test
- url
- cae_file
- case_sheet
-
-
email
- smtpserver
- username
- password
- receiver
db_conf.yml
-
dh_1
- dh_host
- dh_user
- dh_password
- dh_name
- dh_charset
- dh_port
-
dh_2
- …
-
dh_3
- …
common
Base.py
- init_db方法:初始数据化信息,初始化mysql对象
- assert_db方法:数据库的结果与接口返回的结果验证
- json_parse方法:格式化字符,转换json
- res_find方法:查询符合’${(.*)}$‘的所有字符串
- res_sub方法:替换字符串
- params_find方法:验证请求中是否有${}$需要结果关联
-
allure_report方法:生成allure 报告
- #执行命令 allure generate allure_cmd =”allure generate %s -o %s –clean”%(report_path,report_html)
- #subprocess.call subprocess.call(allure_cmd,shell=True)
-
send_mail方法
- 使用ConfigYaml().get_email_info()获得email信息
- 使用SendEmail类的send_mail方法发送邮件
ExcelConfig.py
-
DataConfig类
- 包括用例ID,模块,接口名称,请求URL,前置条件,请求类型,请求参数类型,请求参数 预期结果,实际结果,备注,是否运行,headers,cookies,status_code,数据库验证等等
ExcelData.py
-
Data类
- get_run_data方法: 获取全部测试用例
- get_run_data方法: 根据是否运行列==y,获取执行测试用例
- get_case_pre方法: 根据前置条件:从全部测试用例取到测试用例
data
testdata.xlsx
-
登录
- 请求方式:POST/authorizations
-
请求参数:1. username 2. password 返回数据:1. username 2. user_id 3. token(身份认证凭据)
-
空白
- 无效数据。期待为字典类型
-
{“username”:””,”password”:”12345678”}
- username’: [‘该字段不能为空。’]
-
{“username”:””,”password”:””}
- password’: [‘该字段不能为空。’]
-
{“username”:”python”,”password”:”12345678”}
- user_id’: 1, ‘username’: ‘python’
-
{“username”:”python”,”password”:”test123”}
- 无法使用提供的认证信息登录
-
-
用户中心个人信息
- 请求方式: GET /user/
-
返回数据:id username mobile email email_active
- 身份认证信息未提供
- id’: 1, ‘username’: ‘python’, ‘mobile’: ‘17701397029’, ‘email’: ‘952673638@qq.com’
-
获取商品列表数据
- 请求方式: GET
/categories/(?P<category_id>\d+)/skus?page=xxx&page_size=xxx&ordering=xxx
- 请求参数:categroy_id,page,page_size,ordering
- 返回参数:id name price default_image_url(默认图片) comments
- 请求方式: GET
-
添加到购物车
- 请求方式 : POST /cart/
- 请求参数:sku_id(商品sku id) count(数量)selected(是否勾选,默认勾选)
- 返回数据:sku_id count selected
-
保存订单
- 请求方式 : POST /orders/
- 请求参数:address pay_method
- 返回数据:order_id 订单编号
testlogin.yml
- case_name:测试用例名称
- “url”: “/authorizations/”
-
data
- username
- password
- expect: 期望结果
logs
日志文件名称
日志文件名称= logs目录 + 当前时间+扩展名
日志文件内容
’%(asctime)s %(name)s %(levelname)s %(message)s ‘
report
report.html
result
- report.html
run and requirement
pytest.ini
- addopts :报告生成地址
- testpaths = testcase # 测试路径:testcase文件夹
- python_files = test_*.py # testcase文件夹下面test开头的py文件
- python_classes = Test_* # Test开头的类
- python_functions = test_* # test开头的函数
requirements.txt
- pip install pipreqs # 安装pipreqs
- pipreqs ./ # 生成requirements.txt
- pip install -r requirements.txt # 安装项目依赖的包
run.py执行测试用例
- report_path report_html_path pytest.main([“-s”,”–alluredir”,report_path]) Base.send_mail()
testcase
t_log
- log_demo.py:设置配置信息;定义日志名称getlogger;设置日志级别
- log_file_demo.py:设置log级别,handler,日志级别,输出格式,将日志等写入文件
t_allure
-
allure_demo.py
- @allure.feature一级标签
- @allure.title测试用例标题
- @allure.description执行测试用例结果的描述
- @allure.story二级标签
- allure.dynamic多个输入结果
t_pytest
- pytest_assert.py断言测试
-
pytest_class.py
- setup_class在类中所有方法执行前执行
- teardown_class在类中所有方法执行后执行
-
pytest_demo.py
- 断言的方法
- @pytest.mark.flaky(reruns=3,reruns_delay=2) #失败重跑3次,每次间隔2秒 flaky插件表示失败重跑
t_excel
- excel_demo.py:获取testdata.xlsx行列信息
t_yml
-
yaml_demo.py
- yaml.safe_load:使用yaml读取文件
- yaml.safe_load_all: 读取多个文档
t_subprocess
-
subprocess_demo.py
- shell=True 会调用shell
test_login.py
- 获取测试用例内容list “case_name”: “登录成功用例” “case_name”: “登录失败用例”
- 参数化执行测试用例
test_excel_case.py
-
TestExcel类
- run_api方法发送请求API
- run_pre方法初始化数据
-
test_run方法
- 验证前置条件
- 找到执行用例
- allure创建执行报告
- 断言验证
test_Mall.py
- test_login方法:登录测试
- test_info方法:个人信息
- goods_list方法:商品列表数据
- cart方法:添加购物车
- order方法:保存购物车