基于pytest搭建UI/接口自动化框架过程

总结的相关问题: https://ceshiren.com/t/topic/27834
selenium相关知识总结 https://ceshiren.com/t/topic/28709

接口自动化框架 https://ceshiren.com/t/topic/27861
https://ceshiren.com/t/topic/16640
https://ceshiren.com/t/topic/24307
接口加密 https://ceshiren.com/t/topic/3591
har生成接口用例 https://ceshiren.com/t/topic/27975

1.以PO模型搭建测试框架

1.创建page、test_cases包,分别放业务操作和测试用例
2.(1)封装类BasePage,把driver初始化封装在初始化方法中,把元素定位、切换frame/windows、处理弹框等操作等基础操作封装在这个类中。
(2)其他页面均继承BasePage(登录页面与其他页面等同,之后可以放在conftest.py去引用)

断言:第三方插件断言
yaml案例:封装测试用例到yaml文件
三种等待方式:https://ceshiren.com/t/topic/29785

2.conftest.py+fixture/hook

https://ceshiren.com/t/topic/28507

3.使用requirements.txt管理包

https://ceshiren.com/t/topic/23828
管理所有第三方python包信息,之后可以一键安装

4.日志封装

日志主要是记录操作日志、报错日志
配置日志默认输出等级、日志格式
注意:配置日志的文件位置,pytest.ini的配置是基于用例所在位置找的日志存放位置
方式1:pytest.ini https://ceshiren.com/t/topic/13105
方式2:logging https://ceshiren.com/t/topic/16036

日志输出:

  • 控制台
  • 保存在文件中

todo:

  • 动态生成日志名 方式1的参考文件里有
  • 不同类型日志保存在不同的文件里(error info)

5.pytest.ini配置文件

配置pytest相关属性(pytest运行命令参数、用例书写规则、日志、marker等)
注意:allure报告也可以在此处配置(即为运行命令参数addopts)
https://ceshiren.com/t/topic/23794

6.环境、基础数据配置

项目目录中新建文件夹config,使用yaml文件配置环境、域名、账号等配置?

多环境配置:https://ceshiren.com/t/topic/22281
主要实现技术:读取yaml文件 、yaml文件的配置
需要安装第三方插件pytest-yaml
envs.yaml

default_env: test_env
test_env: http://xx/#/login
dev_env: http://xx/#/login1

until中operate_yaml.py

import yaml

# 读取yaml文件
def get_yamlData(file_path):
    with open(file_path,'r') as file:
        return yaml.safe_load(file)

# 读取环境变量配置文件,获取basic_path
def get_env():
    env_data = get_yamlData(f'..\config\envs.yml')
    basic_path = env_data.get(env_data.get('default_env'))
    return basic_path

实际应用

from until.operateYaml import get_env
class Login:
       _BASE_URL = get_env()
      ...

7.allure报告

https://ceshiren.com/t/topic/26978
实现:
(1)pytest.ini中可以完成allure第一步的操作:包括生成报告源文件、清理历史源文件(即为运行命令参数addopts)

# 1.生成报告中间文件,并清理历史数据
addopts = -v -s --clean-alluredir --alluredir=../result

(2)生成html报告

# 2.转为html报告
allure generate ../result/ -o ../resport/ --clean
# 3.查看报告
allure open -h 127.0.0.1 -p 8883  ../resport

allure作用:

  • 标记测试模块、类、用例(展示在报告中)
  • 生成报告

allure中实现点:

  • 代码异常/定位异常/用例失败(断言失败)进行截图,可以附到allure报告中
  • allure注释性文字写到用例中

8.邮件发送测试报告

9.结合jekins、docker

https://blog.csdn.net/weixin_54696666/article/details/131424397


工具:

问题:


手机端UI自动化 代码参考
代码简单分析:
与web不同,此处把框架代码封装在base包内,把业务代码封装在page里。

  • base里的base_page.py里的类BasePage封装了对元素定位、操作、截图等基础操作;
  • wework_app中的类WeWorkAp继承了BasePage类,并封装了对app的启动、重启、停止、进入首页操作;
  • page里的所有类都继承了WeWorkApp类

basepage
url1
url2
弹窗黑名单-——弹窗关闭按钮列表
代码所在
引用处